在自定义方面动态引入新的属性成员和新枚举(PostSharp)

时间:2017-04-03 16:15:53

标签: c# enums attributes aop postsharp

我在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的类型)?

0 个答案:

没有答案