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

发布于 2024-11-04 00:06:33 字数 874 浏览 0 评论 0原文

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

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

但没有属性。这是由于 DynmaicProxy 还是我在这里做错了什么?

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

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

I tried to assign a custom Attribute to class that comes from a dynamic proxy

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

Example class Login

public partial class Login
{
    [CustomAttribute]
    public virtual int Id
    {
        get;
        set;
    }
}

Now I try to access the Attribute using Generics and Reflection

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

But there is no Attribute. Is that due to the DynmaicProxy or what did I do wrong here?

When I use a concrete class without dynamic proxy like this one, then I get the attributes.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

来世叙缘 2024-11-11 00:06:34

好吧,这个仔细一看就很明显了;

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

是一个动态代理类型并且对任何属性一无所知。所以我必须使用类似的东西:

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

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

OK, this one was obvious after a closer look;

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

is a dynamicProxy type and know nothing about any Attributes. So I have to use the something like:

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

instead of the dynamicProxy instance to get the type from. And finaly there are my Attributes.

烟若柳尘 2024-11-11 00:06:34

使用基本类型

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

Use BaseType.

public static void Process(TSource source)
{
    foreach (PropertyInfo p in target.GetType().BaseType.GetProperties(flags))
    {
        object[] attr = p.GetCustomAttributes(true);
    } 
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文