Я пытаюсь написать рекурсивную функцию-функцию, которая принимает класс в качестве аргумента и проверяет все его члены, чтобы убедиться, что все члены относятся к типу поля или вложенному типу. функция должна вызывать себя для принятия в качестве аргумента членов вложенного типа. Вот где я терплю неудачу:
private void Validate<C>() where C : class
{
MemberInfo[] x = typeof(C).GetMembers();
for (int i = 0; i < x.Length; i++)
{
if (x[i].MemberType != MemberTypes.Field && x[i].MemberType != MemberTypes.NestedType)
{
throw new Exception(string.Format("Class members must be of type Field or NestedType"));
}
//here I have problem sending 'a' as argument to the validate function
x.Where(a => a.MemberType == MemberTypes.NestedType).ToList().ForEach(a => Validate<typeof(a)>());
}
}
n.GetType()
;) 16.02.2016MemberInfo
Validate
. Однако я не думаю, что вызовMemberInfo.GetType
является правильным, поскольку он возвращает информацию о типе дляRuntimeType
. Я бы предложил использовать _5 _ вместо этого, как показано в обновленном коде. 17.02.2016