继承和'奇怪的重复模板模式'

时间:2012-04-19 05:20:55

标签: c# generics inheritance polymorphism

在MVC项目中,我有以下几个类:

public abstract class Browse<T> where T : Browse<T>

public abstract class SqlBrowse<T> : Browse<T> where T : Browse<T>

public class SqlBrowseBoys : SqlBrowse<SqlBrowseBoys>
public class SqlBrowseGirls : SqlBrowse<SqlBrowseGirls>

和以下视图模型

public class BrowseViewModel
{
    public [INTERFACE] People { get; set; }
}

但是我需要一个标记为[INTERFACE]的位置的接口/类,它可以同时使用SqlBrowseBoys和SqlBrowseGirls,所以我可以在多个地方使用BrowseViewModel。

如果有人可以告诉我,我的大脑现在被束缚了,我会喜欢它。我怀疑这需要对课程进行一些更改,这很好,但我目前不知道会是什么。

很多,非常感谢。

1 个答案:

答案 0 :(得分:3)

SqlBrowse<T>实现非泛型SqlBrowse接口(或抽象类),然后编写

public SqlBrowse People { get; set; }

很难说出你的课程会有什么变化,因为我们没有定义。