接口描述使用该类的一些参数的方法

时间:2018-04-25 16:01:43

标签: c# interface

我有几个类实现了一种方法:

class ClassA : BaseClass
{
    void Copy(ClassA a) {}
}

class ClassB : BaseClass
{
    void Copy(ClassB b) {}
}

我想在界面中描述这些方法。有可能吗?

2 个答案:

答案 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}}