C#用一个属性满足两个接口的成员

c#

问题来源:我有一个通用组件来显示数据。数据可能来自不同的数据模型。为了统一组件内部的访问,我创建了一个IOne由所有类实现的接口。为了从应用程序中抽象出数据访问层,我为每个数据模型使用了接口。因此,每个数据显示模型都实现了该IOne接口以及另外一个数据模型接口。接口:

public interface IOne
{
    public int idNameOne { get; set; }
}

public interface DataModelOne
{
    public int anotherNameForId{ get; set; }
}

在我的班级中,我希望两个成员都对一个属性感到满意。我目前的解决方案如下:

public class Implementation : IOne, DataModelOne
{
    private int _id; 
    public idNameOne { get { return _id; } set { _id = value; } }
    public anotherIdName { get { return _id; } set { _id = value; } }
}

有没有办法声明一个属性同时满足两个成员?什么是干净的解决方案?

回答

不,除了你正在做的事情之外别无他法。但是,我会通过删除支持字段(并使用一个自动属性)来清理代码(并进行适当的大小写),并且只让另一个引用第一个......类似于:

public class Implementation : IOne, IDataModelOne
{
    public int IdNameOne { get; set }
    public int AnotherIdName { get => IdNameOne; set => IdNameOne = value; }
}

(注意我为属性使用了正确的大小写……接口上的大小写也应该相同……也IDataModelOne正确命名,带有I前缀)


以上是C#用一个属性满足两个接口的成员的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>