创建抽象泛型方法

Des*_*xAZ 0 c# generics inheritance abstract-class

我有一个C#类,其方法如下:

public class MyType
{
    public MyType Clone()
    {
        var clone = (MyType)MemberwiseClone();

        // Do some other stuff here with the clone's properties

        return clone;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一堆其他类,我想实现Clone方法所以我想我可以创建一个抽象基类,我可以在其中一般定义Clone方法,所以我不必在每个类中放置具体的实现.

我认为这是可能的,但是我没有对泛型做太多工作,而且我过去(几个月前,因为沮丧而丢弃我的代码)的尝试也没有成功.

这可能吗?如果是这样,怎么办呢?

Gus*_*man 5

创建一个抽象的泛型基础,然后在派生的基础上实现具体类型:

public abstract class ClonableBase<T>
{
    public T Clone()
    {
        return (T)this.MemberwiseClone();
    }
}

public class RealClass : ClonableBase<RealClass> { }
Run Code Online (Sandbox Code Playgroud)