8

我对 L2S、自动生成的 DataContext 和部分类的使用有疑问。我已经抽象了我的数据上下文,并且对于我使用的每个表,我都在实现一个带有接口的类。在下面的代码中,您可以看到我有接口和两个部分类。第一个类只是为了确保自动生成的数据上下文中的类继承接口。另一个自动生成的类确保实现了接口中的方法。

namespace PartialProject.objects
{

public interface Interface
{
    Interface Instance { get; }
}

//To make sure the autogenerated code inherits Interface
public partial class Class : Interface { }

//This is autogenerated
public partial class Class
{
    public Class Instance
    {
        get
        {
            return this.Instance;
        }
    }
}

}

现在我的问题是在自动生成的类中实现的方法给出了以下错误:-> 属性“实例”无法从接口“PartialProject.objects.Interface”实现属性。类型应为“PartialProjects.objects.Interface”。<-

知道如何解决此错误吗?请记住,我无法在自动生成的代码中编辑任何内容。

提前致谢!

4

2 回答 2

12

您可以通过显式实现接口来解决此问题:

namespace PartialProject.objects
{
  public interface Interface
  {
    Interface Instance { get; }
  }

  //To make sure the autogenerated code inherits Interface
  public partial class Class : Interface 
  {
    Interface Interface.Instance 
    {
      get
      {
        return Instance;
      }
    }
  }

  //This is autogenerated
  public partial class Class
  {
     public Class Instance
     {
        get
        {
          return this.Instance;
        }
     }
  }
}
于 2010-04-09T11:22:50.013 回答
1

返回类型在 C# 中不是协变的。由于您无法更改自动生成的代码,我看到的唯一解决方案是更改界面:

public interface Interface<T>
{
    T Instance { get; }
}

并相应地更改您的部分课程:

public partial class Class : Interface<Class> { }
于 2010-04-09T10:07:20.170 回答