我在PostSharp中创建了一个自定义AssemblyLevelAspect
,它可以查看命名空间中的所有类型,并根据找到的内容更改某些属性(使用CustomAttributeIntroductionAspect
)。
但是,在某些情况下,我需要修改枚举作为方面的一部分。澄清一下,这是我的代码:
public class Foo
{
[MyAttribute("enum1")]
[SourceAttribute("MyReference")]
public Bar Value { get; set; }
[TargetAttribute("MyReference")]
public MyEnum ValueName { get; set; }
}
public enum MyEnum
{
enum1
}
我的方面会向MyAttribute
添加新的Foo.Value
装饰,但对于每个装饰,它必须将相应的枚举器添加到MyEnum
。由于(我认为)这是不可能的,我希望有可能引入一个新成员取代ValueName
,比如ValueName2
,这是一个新的枚举类型,我构造并动态发出。然后,ValueName2
会将Value
的参数更改为“MyReference2”并将SourceAttribute
添加到新的[TargetAttribute("MyReference2")]
媒体资源,从而ValueName2
绑定{。}}。
如何使用IntroduceMemberAttribute
在方面内动态引入ValueName2
?是否有可能在我的程序集中存在/引入一个新的枚举(ValueName2
的类型)?