我有项目A ,将在项目B 中用作参考。
项目A 的类具有应该可见或不可见的方法,具体取决于项目B 中指定的条件。假设在项目B的web.config appSettings中有一个键“DisplayMethod”,其值为“true”,则该方法是可见的。
这更像是版本控制。我不想为新版本的Project A创建一个单独的dll。我想要一个dll能够同时支持新旧版本。这样,Project B的开发人员可以轻松地在web.config中切换版本,重建项目,他很高兴。
限制
“方法可见”我指的是与以下代码相同的功能:
[EditorBrowsable(EditorBrowsableState.Never)]
public string SomeMethod(string s)
{
return "Hello " + s;
}
到目前为止的研究:
我见过this question。然而,接受它的答案对我不起作用,因为条件常量只能在方法所在的同一项目的项目属性中设置。
条件命名空间也可以,但我面临同样的问题。
答案 0 :(得分:0)
编译时编译器必须知道属性的值。所以你想要实现的目标是不可能的。我不是专家,但也许Mono Cecil能够做到这一点。虽然我不确定它的价值。
答案 1 :(得分:0)
如果“可见”表示“只能通过”,那么您可以使用friend assemblies。它允许另一个程序集访问标记为内部的方法/ propreties / fields等。
为了使其正常工作,您需要在编译时声明B是A的朋友。