C# 基类/接口,具有接受派生类作为参数的泛型方法



我想在基类(和接口中(定义一个接受派生类作为其参数的方法。

abstract class Base : IBase
{
    public void CloneMeToProvidedEntity(??? destination) {};
}
public class Derived : Base
{
     public override void CloneMeToProvidedEntity(Derived destination)
     {
         blah blah ....
     }
}  

如果有人能告诉我界面会是什么样子以及如何做到这一点,我将永远感激不尽......或者如果可能的话

满怀期待

您可能正在寻找:

interface IBase<T>
{
    void CloneMeToProvidedEntity(T destination);
}
public abstract class Base<T> : IBase<T>
{
    public virtual void CloneMeToProvidedEntity(T destination) { }
}
public class Derived : Base<Derived>
{
    public override void CloneMeToProvidedEntity(Derived destination)
    {
    }
}

谢谢@Phil

您可以使用泛型类,其中泛型类型必须为 IBase 类型:

public abstract class Base<T> : IBase where T : IBase
{
    public virtual void CloneMeToProvidedEntity(T destination) { }
}
public class Derived : Base<Derived>
{
    public override void CloneMeToProvidedEntity(Derived destination)
    {
        // blah blah ....
    }
}

最新更新