可以使用 PostSharp AOP 注入动态代码

Possible to inject dynamic code using PostSharp AOP

假设我创建了一个自定义 PS 属性 InjectCodeAttribute 并将其应用于 class 或 class 成员,是否可以告诉 PostSharp 替换该属性以字符串形式提供的动态 C# 代码。

例如,我可以转这个吗:

[InjectCodeAttribute] public class MyClass

进入这个:

[DependencyProperty, Obfuscation(Feature = "renaming", Exclude = true, StripAfterObfuscation = true)] public class MyClass

通过向 InjectCodeAttribute 属性提供此字符串 [DependencyProperty, Obfuscation(Feature = "renaming", Exclude = true, StripAfterObfuscation = true)]

注意:我知道 PostSharp http://doc.postsharp.net/attribute-introduction 提供的自定义属性功能,并且我可以创建一个注入示例属性的属性,但我只想知道是否可以注入任何代码(甚至可能在编译期间抛出 exception/error 的无效代码)我以字符串形式提供。

所描述的用例的答案是否定的。 PostSharp 在 之后运行 C# 编译已经完成并处理二进制程序集。此时为 C# 编译器添加字符串输入已经太晚了。