C# 部分类中的接口实现问题

C# 部分类中的接口实现问题,c#,linq-to-sql,interface,partial,C#,Linq To Sql,Interface,Partial,我有一个关于L2S、自动生成的DataContext和使用分部类的问题。我已经抽象了我的datacontext,对于我使用的每个表,我都实现了一个带有接口的类。在下面的代码中,您可以看到我有接口和两个分部类。第一个类就是用来确保自动生成的datacontext inherets接口中的类。另一个自动生成的类确保实现了接口中的方法 namespace PartialProject.objects { public interface Interface { Interface Insta

我有一个关于L2S、自动生成的DataContext和使用分部类的问题。我已经抽象了我的datacontext,对于我使用的每个表,我都实现了一个带有接口的类。在下面的代码中,您可以看到我有接口和两个分部类。第一个类就是用来确保自动生成的datacontext inherets接口中的类。另一个自动生成的类确保实现了接口中的方法

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” 返回类型在C#中是不协变的。由于无法更改自动生成的代码,我看到的唯一解决方案是更改界面:

public interface Interface<T>
{
    T Instance { get; }
}
公共接口
{
T实例{get;}
}
并相应地更改您的部分课程:

public partial class Class : Interface<Class> { }
public分部类类:接口{}

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

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;
        }
     }
  }
}

这正是我想要的:]非常感谢!作品很棒。谢谢你提供了很好的解决方案。我几乎“崩溃”了我的脑袋,试图解决接口所施加的限制。以防任何人在实现上述解决方案后遇到以下错误:修饰符“public”对此项无效-基本上删除所有访问修饰符,因为这些属性将被强制为私有(仔细想想,这是有道理的)。