我正在寻找一个基类的设计模式,它强制所有派生类实现所有基类方法,而派生类中的方法具有不同的返回类型。该场景是一个通用的MemoryObject类(接口/抽象),保持并返回内存中的任何类对象。但派生类(static / sealed / singleton)应该返回正确的类型。
所以要求是 - 强制所有派生类实现基类的所有属性和方法 - 派生类中的方法必须返回正确的类型
以下是一些示例代码,不可编译,但仅供参考:
public interface MemoryObject
{
object FromMemory { get; }
//... other properties and methods
}
public sealed class MemoryObjectA : MemoryObject
{
public static List<string> FromMemory
{
get { return new List<string>(); }
}
//... other properties and methods
}
public sealed class MemoryObjectB : MemoryObject
{
public static DataTable FromMemory
{
get { return new DataTable(); }
}
//... other properties and methods
}
提前感谢您的建议!
答案 0 :(得分:5)
听起来你只需要让它变得通用:
public interface MemoryObject<T>
{
T FromMemory { get; }
//... other properties and methods
}
public class MemoryObjectA : MemoryObject<List<string>> { ... }
public class MemoryObjectB : MemoryObject<DataTable> { ... }
请注意,实现方法必须是实例方法,不是静态方法。 (如果你愿意,你可以实现单例实现。)