doe*_*doe 33 c# interface getter-setter
是否有可能以某种方式在C#中实现此行为:
public interface IReadOnly
{
Data Value { get; }
}
internal interface IWritable : IReadOnly
{
Data Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将readonly接口公开给外部程序集,但在内部使用可写接口(我也可以用不同的方式实现).
我知道我可以使用一个实现但添加setter 的抽象类IReadOnly,但这迫使我从该类派生所有内部实现.
Han*_*ant 43
这不是问题:
public interface IReadOnly {
Data Value { get; }
}
internal interface IWritable : IReadOnly {
new Data Value { get; set; }
}
internal class Impl : IWritable {
public Data Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
该Impl.Value属性实现需要照顾两个 IReadOnly.Value和IWritable.Value,在本次测试片段展示:
var obj = new Data();
var target = new Impl();
var irw = (IWritable)target;
irw.Value = obj;
var iro = (IReadOnly)target;
System.Diagnostics.Debug.Assert(Object.ReferenceEquals(iro.Value, obj));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4619 次 |
| 最近记录: |