我有一个用 C# 编写的接口(interface),它是否已经由类实现了。是否可以在不修改现有已实现类的情况下,在接口(interface)中再添加一个属性作为可选属性?
例如
public interface IShape
{
int area { get; }
}
public class FindWindow : IShape
{
public int area
{
get
{
return 10;
}
}
}
在这个FindWindow中已经写好了。是否可以添加一个可选属性而不在现有类中实现。
即,
public interface IShape
{
int area { get; }
//optional
//string WindowName{get;}
}
public class FindWindow : IShape
{
public int area
{
get
{
return 10;
}
}
//WindowName i am not implementing here
}
public class FindWindowName : IShape
{
public int area
{
get { return 20; }
}
public string WindowName
{
get { return "Stack Overflow"; }
}
}
最佳答案
没有接口(interface)可选成员的概念。
这里需要定义两个接口(interface)。一个包含区域
,另一个包含WindowName
。像这样:
public interface IShape
{
int area { get; }
}
public interface IFindWindow: IShape
{
string WindowName { get; }
}
然后实现类可以选择实现IShape
或IFindWindow
。
在运行时,您只需使用 is
运算符来确定 IFindWindow
是否由手头的对象实现。
IShape shape = ...;
if (shape is IFindWindow)
....
要实际使用更派生的接口(interface),请使用 as
运算符:
IShape shape = ...;
IFindWindow findWindow = shape as IFindWindow;
if (findWindow != null)
string windowName = findWindow.WindowName;
关于用于创建可选属性的 C# 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17855037/