首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更复杂的属性参数

更复杂的属性参数
EN

Stack Overflow用户
提问于 2019-01-26 19:22:03
回答 1查看 25关注 0票数 0

我想使用System.Attribute为我的类创建一些元数据。我需要的是利用编译器的优势来获取名称,而不是使用strings。但是我的方法不能做到,因为attibutes不接受像我在这里写的那样的复杂参数:

代码语言:javascript
复制
Public Class Foo
   Public Property Id as Integer
   <Attribute(AttributeInputA.Create(of Bar)(Function(item) item.Name))>
   Public Property Name as String
End Class 
Public Class Bar
    Public Property Name as String
End Class
<AttributeUsage(AttributeTargets.Property Or
                   AttributeTargets.Field,
                   AllowMultiple:=True)>
Public Class Attribute
   Public Sub New(attibuteInputA as AttributeInputA)
   End Sub
End Class
Public Class AttributeInputA
    Public Share Function Create(Of T)(System.Linq.Expressions.Expression(Of Func(Of Object , T)) AS AttributeInputA
    End Function
End Class

我想知道的是,有没有其他方法可以做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2019-01-26 20:33:22

你可以将字符串反序列化为你想要的任何东西。在这种情况下,您可以使用代码作为CodeDom (需要编译器可用)或Reflection.Emit (不需要,但需要IL)的源代码。

无论哪种方式,似乎没有太多的回报,似乎有很多麻烦。我会编写我需要的特定案例,然后使用字典查找或类来查找它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54377901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档