我想在父接口中声明属性的 getter ,在子接口中声明 setter :
public interface IReadOnlyValue
{
int Value { get; }
}
public interface IValue : IReadOnlyValue
{
int Value { set; }
}
public class Value : IValue
{
int Value { get; set; }
}
此无法编译,因为Value
中的IValue
hides
来自IReadOnlyValue
。知道我需要Value
才能成为财产吗?
答案 0 :(得分:2)
看来这是类名 Value
错了:
错误CS0542“值”:成员名称不能与他们的相同 附件类型
(粗体是我的)。如果将Value
重命名为MyValue
,就可以了:
public interface IReadOnlyValue {
int Value { get; }
}
// It seems that IValue should have both "get" and "set"
// See IList<T> and IReadOnlyList<T> as an example
// However, you can drop "get" if you want
public interface IValue {
int Value { get; set; }
}
public class MyValue: IReadOnlyValue, IValue {
public int Value { get; set; }
}