我明白“新”关键字如何隐藏派生类中的方法。但是,它对实现使用关键字的接口的类有什么影响?您可以使用C#new关键字来扩展接口的属性吗?
考虑这个例子,我决定通过使其属性读/写来扩展接口。
public interface IReadOnly {
string Id {
get;
}
}
public interface ICanReadAndWrite : IReadOnly {
new string Id {
get;
set;
}
}
然后你可以做这样的事情:
public IReadOnly SomeMethod() {
// return an instance of ICanReadAndWrite
}
这是不好的设计?它会导致我的类实现ICanReadAndWrite的问题吗?
编辑:这里是一个人为的例子,为什么我可能想要做这样的事情:
说我有一个工厂类返回一个IShoppingCartItemReadWrite。然后,我可以拥有一个服务层来操纵价格,更改内容等。然后,我可以将这些对象作为IShoppingCartItemReadOnly传递给某种不会更改它们的表示层。 (是的,我知道它在技术上可以变化them--这是一个设计问题,而不是安全性等)
您的具体示例没有多大意义。如果你可以读写,那么它不是只读的。 – 2009-09-09 13:16:17
IShoppingCartItemReadWrite可以更改,但是如果我有一个IShoppingCartItemReadOnly的引用,除非将其转换为其他内容,否则它是只读的。 – user10789 2009-09-09 13:20:52
请注意,您实际上并不需要“新”关键字。 – 2009-09-09 13:22:20