想象一下这样的接口层次结构:
public interface IAnimal
{
string Color { get; }
}
public interface ICat : IAnimal
{
}
在这种情况下,ICat'继承'IAnimal的Color属性。
是否可以在ICat的Color属性中添加属性,而无需将其添加到IAnimal?
以下是我想要实现的示例,但给出了编译器警告:
public interface IAnimal
{
string Color { get; }
}
public interface ICat : IAnimal
{
[MyProperty]
string Color { get; }
}
答案 0 :(得分:1)
这可以在C#4.0 beta 2中为我编译。它会发出警告,提示“新”关键字可能是有保证的。
同样对于好奇,这让我感到有趣:http://blogs.msdn.com/ericlippert/archive/2009/09/14/what-s-the-difference-between-a-partial-method-and-a-partial-class.aspx
答案 1 :(得分:1)
我认为你得到的警告是
warning CS0108: 'ICat.Color' hides inherited member 'IAnimal.Color'. Use the new keyword if hiding was intended.
您要通过应用该属性来完成什么?
如果您想避免该警告,可以执行以下操作:
public class MyPropertyAttribute : Attribute { }
public interface IAnimal {
string Color { get; }
}
public abstract class Cat : IAnimal {
[MyProperty]
public string Color {
get { return CatColor; }
}
protected abstract string CatColor {
get;
}
}