使用C#我有一个现有的接口,我希望将其拆分为读写接口,但仍保留原始接口。什么是最好的方式?
我可以制作3个独立的界面:
interface IExistingReadWrite{
int width {get; set;}
}
interface IRead{
int width {get;}
}
interface IWrite{
int width {set;}
}
或者我可以从IRead和IWrite中创建IExistingReadWrite,因此当他们查看IExistingReadWrite时,其他编码器更清楚,还有可用的隔离IRead和IWrite接口......
interface IExistingReadWrite: IRead, IWrite{
new int width {get; set;}
}
interface IRead{
int width {get;}
}
interface IWrite{
int width {set;}
}
但我现在必须使用“新的”#39;在IExistingReadWrite上隐藏IRead和IWrite中的属性,否则会出现有关歧义的警告。影子并不是我的意图,我希望IExistingReadWrite能够将作品传递给'它所固有的接口比定义一个新属性(因此没有机会为每个单独的接口发生单独的实现)。有没有更好的方法。
答案 0 :(得分:0)
到目前为止看起来Corak有最好的答案......在IExistingReadWrite上删除了IWrite界面,所以解决方案现在看起来像......
interface IExistingReadWrite : IRead
{
// Use IWrite interface instead if you require write only.
int width { get; set; }
}
interface IRead
{
int width { get; }
}
public interface IWrite
{
int width {set; }
}
这给了OK行为。如果您需要更高的安全性,可以添加适配器,例如:
internal class WriteImpl : IWrite
{
private IExistingReadWrite worker;
internal FooWriteImpl(IExistingReadWrite i)
{
worker = i;
}
public string width
{
get { throw new Exception("Dave I cannot let you do that");}
set { worker.width = value; }
}
}