首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将EntitySet实现为IList

将EntitySet实现为IList
EN

Stack Overflow用户
提问于 2014-05-10 13:53:40
回答 2查看 194关注 0票数 1

我在玩LinqToSql和Im,试图为我的一个类实现存储库模式。当我试图将一个属性EntitySet映射到IList时,问题就出现了,我得到了一个错误

'TheCore.Models.User‘不实现接口成员'TheCore.Models.IUserRepository.Vehicles’。'TheCore.Models.User.Vehicles‘不能实现'TheCore.Models.IUserRepository.Vehicles’,因为它没有匹配的返回类型'System.Collections.Generic.IList‘

EntitySet似乎实现了IList,所以为什么我不能将IList属性映射到EntitySet属性?

EntitySet:

代码语言:javascript
复制
        [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Users_Vehicles", Storage="_Vehicles", ThisKey="Id", OtherKey="FkOwnerId")]
    public EntitySet<Vehicle> Vehicles
    {
        get
        {
            return this._Vehicles;
        }
        set
        {
            this._Vehicles.Assign(value);
        }
    }

存储库接口:

代码语言:javascript
复制
        IList<Vehicle> Vehicles { get; set; }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-10 14:05:11

接口实现的返回类型必须与接口中声明的返回类型匹配。这称为返回类型协方差,C#不支持它。

因此,即使List实现了IList,下面的代码也不能工作

代码语言:javascript
复制
public interface IFoo
{
    IList<string> Foos {get; set;}
}

public class Foo : IFoo
{
    public List<string> Foos {get; set;}
}

看看这个问题:"Interface not implemented" when Returning Derived Type

票数 1
EN

Stack Overflow用户

发布于 2014-05-10 14:06:13

我可能不理解您的问题,但似乎您有一个与方法IList<Vehicle> Vehicles { get; set; }的接口,并试图通过提供一个实现public EntitySet<Vehicle> Vehicles来履行合同。这是不允许的--实现必须提供与接口相同的返回类型(在本例中为IList<Vehicle>)。如果可以,将存储库实现更改为包装EntitySet,然后将该方法与所需接口匹配:

代码语言:javascript
复制
public class Vehicle
{
}
public interface IRepository
{
    IList<Vehicle> Vehicles { get; set; }
}

public class Repository : IRepository
{
    private EntitySet<Vehicle> _Vehicles;
    public IList<Vehicle> Vehicles
    {
        get
        {
            return this._Vehicles;
        }
        set
        {
            this._Vehicles.Assign(value);
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23581891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档