Каким типом интересуются Вы? Тип возврата метода/свойства/события и т.д.?
Если так, я не думаю, что существует что-либо в MemberInfo
, чтобы позволить Вам достигнуть его непосредственно - необходимо будет бросить и использовать MethodInfo.ReturnType
, PropertyInfo.PropertyType
, FieldInfo.FieldType
, EventInfo.EventHandlerType
и любые другие, которых я забыл. (Помните, что сами типы могут быть участниками. Не уверенный, что Вы захотите сделать с ними!)
РЕДАКТИРОВАНИЕ: Если Вы интересуетесь тем, представляет ли определенный тип или MyType или некоторый подкласс, то используйте Тип. IsAssignableFrom:
if (typeof(MyType).IsAssignableFrom(type))
РЕДАКТИРОВАНИЕ: Теперь, когда мы знаем, что Вы хотите свойства, это легко - используют GetProperties вместо GetMembers. Мне нравится делать отражение с LINQ:
var query = from type in assembly.GetTypes()
from property in type.GetProperties()
where typeof(MyType).IsAssignableFrom(property.PropertyType)
select new { Type=type, Property=property };
foreach (var entry in query)
{
Console.WriteLine(entry);
}
, Если Вы не поклонник LINQ:
foreach (Type t in a.GetTypes())
foreach (PropertyInfo pi in t.GetProperties())
if (typeof(MyType).IsAssignableFrom(pi.PropertyType))
Console.WriteLine("Found a property that is MyType");
Примечание, что Вы могли бы хотеть указать обязательные флаги для получения непубличных свойств и т.д.
Команда Django решила из соображений философии не разрешать передачу параметров метода в представление. Лично я с ними согласен; это заставляет разделить логику и представление, которое я считаю полезным. Это предотвращает вид спагетти-кода, которым печально известен PHP.
Правильное решение в случае, когда вы связали, - передать результат этого вызова из представления в шаблон через контекст. Это просто более удобно в обслуживании. Если позже вам потребуется изменить my_related_deltas (3)
на my_related_deltas (4)
, вы перейдете в представление, которое должно быть достаточно кратким, вместо того чтобы искать по шаблонам, чтобы точно определить, где он определен.