关于c#:继承和’奇怪的重复模板模式’

Inheritance and the 'Curiously Recurring Template Pattern'

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

1
2
3
4
5
6
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>

以及以下视图模型

1
2
3
4
public class BrowseViewModel
{
    public [INTERFACE] People { get; set; }
}

但我需要一个位于标记为[接口]的位置的接口/类,它可以同时使用sqlbrowseboys和sqlbrowsegirls,这样我可以在多个地方使用browseview模型。

如果有人能告诉我我的大脑现在是如何打结的,我会很高兴的。我怀疑这需要对课程做一些修改,这很好,但我目前还不知道会是什么。

多谢。


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

1
public SqlBrowse People { get; set; }

很难知道你的类会发生什么变化,因为我们没有它们的定义。