一个想法:
public abstract class Fruit<T> where T : Fruit<T>, new(){ public static T CreateInstance() { T newFruit = new T(); newFruit.Initialize(); // Calls Apple.Initialize return newFruit; } protected abstract void Initialize();}public class Apple : Fruit<Apple>{ protected override void Initialize() { ... }}像这样调用:
Apple myAppleVar = Fruit<Apple>.CreateInstance();
无需额外的工厂课程。



