web.config AppSettings的条件EditorBrowsable

时间:2013-07-31 18:21:31

标签: c# web-config

我有项目A ,将在项目B 中用作参考。

项目A 的类具有应该可见或不可见的方法,具体取决于项目B 中指定的条件。假设在项目B的web.config appSettings中有一个键“DisplayMethod”,其值为“true”,则该方法是可见的。

这更像是版本控制。我不想为新版本的Project A创建一个单独的dll。我想要一个dll能够同时支持新旧版本。这样,Project B的开发人员可以轻松地在web.config中切换版本,重建项目,他很高兴。

限制

  • 我无法控制项目B.我只能问开发者 项目B进行了一些简单的修改,如web.config修改。
  • 我不知道哪些项目将使用项目A.项目A是一个 开源项目,可供任何人使用,可能在 成千上万的项目。

“方法可见”我指的是与以下代码相同的功能:

[EditorBrowsable(EditorBrowsableState.Never)]
public string SomeMethod(string s)
{
    return "Hello " + s;
}

到目前为止的研究:

我见过this question。然而,接受它的答案对我不起作用,因为条件常量只能在方法所在的同一项目的项目属性中设置。

条件命名空间也可以,但我面临同样的问题。

2 个答案:

答案 0 :(得分:0)

编译时编译器必须知道属性的值。所以你想要实现的目标是不可能的。我不是专家,但也许Mono Cecil能够做到这一点。虽然我不确定它的价值。

答案 1 :(得分:0)

如果“可见”表示“只能通过”,那么您可以使用friend assemblies。它允许另一个程序集访问标记为内部的方法/ propreties / fields等。

为了使其正常工作,您需要在编译时声明B是A的朋友。