C#exceptioninheritance语法w /generics

我在NHibernate类定义中遇到了这个问题:

public class SQLiteConfiguration : PersistenceConfiguration 

所以这个类inheritance自一个由派生类参数化的基类? 我的脑袋爆炸了。

有人可以解释这意味着什么以及这种模式有用吗?

(顺便说一句,这不是一个特定于NHibernate的问题。)

这是一个有趣的奇怪重复模板模式,不是吗?

在开发双链接树时,我使用了相同的模式。 每个节点有1个父节点和0个子节点

 class Tree where T : Tree { T parent; List children; T Parent { get; set; } protected Tree(T parent) { this.parent = parent; parent.children.Add(this); } // lots more code handling tree list stuff } 

履行

 class Coordinate : Tree { Coordinate(Coordinate parent) : this(parent) { } static readonly Coordinate Root = new Coordinate(null); // lots more code handling coordinate systems } 

用法

 Coordinate A = Coordinate.Root; Coordinate B = new Coordinate(A); B.Parent // returns a Coordinate type instead of a Node<>. 

因此,从Tree<>inheritance的任何内容都将包含适当类型的父对象和子对象的属性。 这个技巧对我来说是纯粹的魔力