C# 如何在DynamicProxy类中使用自定义属性

C# 如何在DynamicProxy类中使用自定义属性,c#,entity-framework,generics,reflection,attributes,C#,Entity Framework,Generics,Reflection,Attributes,我试图为来自动态代理的类分配一个自定义属性 System.Data.Entity.DynamicProxies.Login_A2947F53... 示例类登录 public partial class Login { [CustomAttribute] public virtual int Id { get; set; } } 现在我尝试使用泛型和反射来访问属性 public static void Process(TSourc

我试图为来自动态代理的类分配一个自定义属性

System.Data.Entity.DynamicProxies.Login_A2947F53...
示例类登录

public partial class Login
{
    [CustomAttribute]
    public virtual int Id
    {
        get;
        set;
    }
}
现在我尝试使用泛型和反射来访问属性

public static void Process(TSource source)
{
    foreach (PropertyInfo p in target.GetType().GetProperties(flags))
    {
        object[] attr = p.GetCustomAttributes(true); // <- empty
    } 
}

好的,这一点在仔细观察后很明显

System.Data.Entity.DynamicProxies.Login_A2947F53...
是dynamicProxy类型,对任何属性都一无所知。因此,我必须使用类似于:

foreach (PropertyInfo p in typeof(Login).GetProperties(flags))

而不是从中获取类型的dynamicProxy实例。最后还有我的属性。

使用BaseType

public class TestObject
{
    [CustomAttribute]
    public virtual string Name { get; set; }
    [CustomAttribute]
    public virtual string Street { get; set; }
    public virtual int Age { get; set; }
    public virtual string Something { get; set; }
}
public static void Process(TSource source)
{
    foreach (PropertyInfo p in target.GetType().BaseType.GetProperties(flags))
    {
        object[] attr = p.GetCustomAttributes(true);
    } 
}