寻找一个接口/抽象,但方法返回不同的类型

时间:2013-12-11 17:05:48

标签: c# design-patterns

我正在寻找一个基类的设计模式,它强制所有派生类实现所有基类方法,而派生类中的方法具有不同的返回类型。该场景是一个通用的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
    }

提前感谢您的建议!

1 个答案:

答案 0 :(得分:5)

听起来你只需要让它变得通用:

public interface MemoryObject<T>
{
     T FromMemory { get; }
     //... other properties and methods
}

public class MemoryObjectA : MemoryObject<List<string>> { ... }
public class MemoryObjectB : MemoryObject<DataTable> { ... }

请注意,实现方法必须是实例方法,不是静态方法。 (如果你愿意,你可以实现单例实现。)