我对L2S,Autogenerated DataContext和Partial Classes的使用存在疑问。我已经抽象了我的datacontext,并且对于我使用的每个表,我正在实现一个带接口的类。在下面的代码中,您可以看到我有接口和两个分部类。第一个类就是确保自动生成的datacontext中的类具有接口。另一个自动生成的类确保实现Interface的方法。
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'。 < -
知道如何解决这个错误吗?请记住,我无法在自动生成的代码中编辑任何内容。
提前致谢!
答案 0 :(得分: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;
}
}
}
}
答案 1 :(得分:1)
返回类型在C#中不协变。由于您无法更改自动生成的代码,因此我看到的唯一解决方案是更改界面:
public interface Interface<T>
{
T Instance { get; }
}
相应地更改你的部分课程:
public partial class Class : Interface<Class> { }