Моя задача - установить / инициализировать все свойства, помеченные пользовательскими атрибутами внутри класса, производными от класса и свойств в свойствах этого класса.Пример:
class Program
{
static void Main(string[] args)
{
A a = new A();
a.InjectableProperties();
}
}
public class A : C
{
[CodeModuleProperty(ModulePropertyType.Injectable)]
public string NameA{ get; set; }
public B ObjB { get; set; }
public IEnumerable<PropertyInfo> InjectableProperties()
{
var response = new List<PropertyInfo>();
// get the mnodule properties
var moduleProperties = GetType().GetProperties();
foreach (var moduleProperty in moduleProperties)
{
var attribute = moduleProperty.GetCustomAttributes(typeof(CodeModulePropertyAttribute), false)
.FirstOrDefault();
if (attribute != null && ((CodeModulePropertyAttribute)attribute).PropertyType ==
ModulePropertyType.Injectable)
{
response.Add(moduleProperty);
}
}
return response // Only gives A,D &C . I also want custom attributes children properties within objB;
}
}
В этом методе я также хочу получить свойства настраиваемых атрибутов для свойства "ClassB" вместе со свойствами из классов A, D и E. Как этого добиться?
public class B
{
[CodeModuleProperty(ModulePropertyType.Injectable)]
public string NameB { get; set; }
}
public class C : D
{
[CodeModuleProperty(ModulePropertyType.Injectable)]
public string NameC { get; set; }
}
public class D
{
[CodeModuleProperty(ModulePropertyType.Injectable)]
public string NameD { get; set; }
}
[AttributeUsage(AttributeTargets.Property)]
public class CodeModulePropertyAttribute : Attribute
{
public CodeModulePropertyAttribute(ModulePropertyType propertyType)
{
PropertyType = propertyType;
}
public ModulePropertyType PropertyType { get; set; }
}
public enum ModulePropertyType
{
Injectable = 1,
DynamicConfiguration = 2
}