1

我有一个 C# 程序,其中的某些部分代码是使用 D 风格的 mixins 生成的(即,方法的主体被编译、执行,并将结果插入到一个类中)。该方法带有标记[MixinAttribute],自然我不希望它被编译到程序中。是否有一些便宜的方法可以防止使用此属性装饰的方法被包含在构建中?

4

1 回答 1

2

唯一的方法是使用编译器条件:

#if DEBUG
[MixinAttribute]
// method you don't want included
#endif

这种方法的问题在于,您创建了一个在未定义 DEBUG 的构建中不可用的成员。然后你必须用条件标记所有用法,我认为这不是你想要的。这不是很清楚,但我认为您真正要问的是如何在构建时创建动态调用站点,或者更确切地说,在 JIT 时(这是ConditionalAttribute控制的内容)。如果是这种情况,如果不使用某种动态调度覆盖(使用一些代理库)或使用 PostSharp 之类的后处理工具来操作编译器输出,您将无法在 C# 中轻松做到这一点。

于 2013-02-22T06:18:47.923 回答