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

本文关键字:自定义属性 DynamicProxy | 更新日期: 2023-09-27 17:53:20

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

System.Data.Entity.DynamicProxies.Login_A2947F53...

示例类Login

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
    } 
}

但是没有Attribute。这是由于dymaicproxy还是我做错了什么?

当我使用一个没有像这样的动态代理的具体类时,然后我得到属性。

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; }
}

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

好吧,仔细一看,这个是很明显的;

System.Data.Entity.DynamicProxies.Login_A2947F53...

是一个动态代理类型,它不知道任何属性。所以我必须使用如下的格式:

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

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

使用 BaseType

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