1

我正在为 DotNet 4.0 中的 Fitnesse 编写一些固定代码,并希望保护我的 api 方法不被在代码库中使用。我认为这可以使用 [Obsolete] 属性来完成,但是如果您在另一个标记为过时的方法中使用过时的方法,则不会产生编译错误。

[Obsolete("Used only externally", true)]
public void Method1() {
}

[Obsolete("Used only externally", true)]
public void Method2() {
    Method1();
}

我希望上面的代码生成编译错误。有没有其他方法可以解决这个问题?最好在 DotNet 框架本身内?

4

2 回答 2

1

您不应该将夹具代码放入要测试的程序集中。相反,您应该为您的夹具代码创建一个单独的项目。夹具代码应使用与程序集的其他客户端相同的公共 API 访问您的“被测系统”。

而您在 FitNesse 中编写的测试只能访问夹具组件。

+----------------+    +-----------------+    +-------------------+
| FitNesse Tests | -> | Fixture Assembly| -> | System under test |
+----------------+    +-----------------+    +-------------------+
                                                   ^
                       +----------------+          |
                       | Other Clients  | ---------+
                       +----------------+
于 2013-05-02T10:29:06.703 回答
0

您还没有给出您的用例的真实示例,但是如果您想保护您的 API 方法不被其他程序集调用,为什么不使用internal访问修饰符呢?

http://msdn.microsoft.com/en-us/library/7c5ka91b.aspx

于 2013-05-01T15:09:02.847 回答