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前缀)