IDE:VS 2010,C#.net
我有一个Child类A和B,它正在实现包含一些属性的接口I.
请参阅此代码
class A : UserControl, I
{
string _str = "From a";
string str
{
get { return _str; }
set { _str = value; }
}
}
class B : UserControl, I
{
string _str = "From b";
string str
{
get { return _str; }
set { _str = value; }
}
}
在这里我们可以看到代码
string str
{
get { return _str; }
set { _str = value; }
}
这个代码在A和B类中都很常见,那么有没有办法让这段代码保持通用..?
注意:A和B都是用户控件。
答案 0 :(得分:4)
是的,创建一个C
和A
派生自的抽象类B
。
或者,如果您希望接口的所有实现都具有默认的不可覆盖方法,则可以使用扩展方法。
但是,您向我们展示的场景最好通过构造函数实现。
class A : C
{
public A() : base("From a")
{
}
}
abstract class C : I, UserControl
{
public string Str {get; set;}
protected C(string someStr)
{
Str = someStr;
}
}