我正在制作一个程序,它使用反射来检查程序集中的枚举类型,并且在某些情况下,重写定义这些枚举的 C# 源文件。
有问题的源文件是一种严格规定的格式,基本上只是定义了枚举,可能在一个部分类中,所以创建一个简单的生成器并不难。
不幸的是,当枚举上有自定义属性时,情况会稍微复杂一些,在这个应用程序中通常会有。
我可以使用反射来获取 Attribute 或 CustomAttributeData 对象的列表。现在我正在使用一种特别的方法,它假设有关找到的特定属性的事情并在此基础上为它们生成 C# 代码,但我更喜欢更通用的方法。
给定一个属性,如果可以安全地假设该属性没有参数,我可以确定类型和简单的输出代码:
[SomeNamespace.SomeAttribute]
不幸的是,假设没有参数是不安全的,如果有的话,生成所需的代码也不是那么简单。
给定我们想要复制的属性调用,.NET 或其他地方是否有一些现有机制可以在一般情况下为属性生成 C# 代码?我检查了 Attribute 和 CustomAttributeData 类,但它们似乎没有自动处理这个问题。