我在项目中添加了协变接口(interface):

interface IView
{
}

interface IPresenter<out TView> where TView : IView
{
    TView View { get; }
}

我创建了一些类,实现了这些接口(interface):
class TestView : IView
{
}

class TestPresenter : IPresenter<TestView>
{
  public TestView View
  {
    get { return something; }
  }

  private void DoSomething()
  {
  }
}

我可以毫无问题地使用它:
IPresenter<IView> presenter = new TestPresenter();

所以一切似乎都正确,因此我假设我的协方差用法是正确的。不幸的是,我们的单元测试项目包含来自同一项目中某些类型的私有(private)访问器,例如协变量接口(interface),这会导致构建失败。



这到底是什么问题?我的执行中是否有失败,分别。如何解决这个问题?不能是,一旦我们使用协变类型,就必须避免访问器???是否可以防止为某些类型创建访问器来解决此问题?

最佳答案

这是Visual Studio 2010中的错误。已报告给Microsoft Connect,但已关闭,显然不会得到修复。
根据Bruce Taimana的博客文章,the private accessor feature的开发已停止,并且可能在以后的Visual Studio版本中删除。列出的可能替代品有:

关于c# - 使用包含协变类型的项目的访问者在单元测试项目中构建失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3666220/

10-12 13:12
查看更多