我有几个类实现了一种方法:
class ClassA : BaseClass
{
void Copy(ClassA a) {}
}
class ClassB : BaseClass
{
void Copy(ClassB b) {}
}
我想在界面中描述这些方法。有可能吗?
答案 0 :(得分:1)
您可以使用Generic interface
,例如如下
interface ICopy<T>
{
void Copy<T>(T t)
}
Class A: ICopy<A>,BaseClass//(if you need baseclass)
{
public void Copy(A a)
{}
}
Class B: ICopy<B>,BaseClass//(if you need baseclass)
{
public void Copy(B b)
{}
}
你也可以尝试ICloneable
内置界面,如果你只想克隆你的类,
这只是建议
class Rock : ICloneable
{
int _weight;
bool _round;
bool _mossy;
public Rock(int weight, bool round, bool mossy)
{
this._weight = weight;
this._round = round;
this._mossy = mossy;
}
public object Clone()
{
return new Rock(this._weight, this._round, this._mossy);
}
}
答案 1 :(得分:1)
使用通用界面。使用T
,您可以将类型参数BaseClass
约束为interface Interface<T> where T : BaseClass
{
void Copy<T>(T t);
}
class ClassA : BaseClass, Interface<ClassA>
{
public void Copy(ClassA b) {}
}
class ClassB : BaseClass, Interface<ClassB>
{
public void Copy(ClassB b) {}
}
及其派生类型。
{{1}}