首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为通过反射找到的属性重新生成C#代码的简单方法?

为通过反射找到的属性重新生成C#代码的简单方法?
EN

Stack Overflow用户
提问于 2013-03-13 21:25:24
回答 1查看 85关注 0票数 0

我正在编写一个程序,它使用反射来检查程序集中的枚举类型,在某些情况下,还会重写定义这些枚举的C#源文件。

有问题的源文件是一种严格规定的格式,它基本上只是定义枚举,可能是在分部类中,所以创建一个简单的生成器并不太难。

不幸的是,当枚举上有自定义属性时,情况会有点复杂,在此应用程序中通常会有自定义属性。

我可以使用反射来获取Attribute或CustomAttributeData对象的列表。现在,我正在使用一种特别的方法,它假设找到的特定属性并在此基础上为它们生成C#代码,但我更喜欢更通用的方法。

给定一个属性,如果假设该属性没有参数是安全的,我可以确定类型并简单地输出如下代码:

代码语言:javascript
复制
[SomeNamespace.SomeAttribute]

不幸的是,假设没有参数存在是不安全的,即使有参数,生成所需代码也不是那么简单。

在给定我们想要复制的属性调用的情况下,.NET或其他地方是否有一些现有的机制可以在一般情况下为属性生成C#代码?我检查了属性和CustomAttributeData类,但它们中的任何内容似乎都不能自动处理此问题。

EN

回答 1

Stack Overflow用户

发布于 2013-03-13 21:34:23

您可以使用Type.GetCustomAttributesData。这不是提供构造的Attribute实例,而是提供一个CustomAttributesData对象,该对象具有对构造函数、构造函数参数和命名参数的单独访问权限,您需要将该属性作为源代码重新生成。

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

https://stackoverflow.com/questions/15386644

复制
相关文章

相似问题

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