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的任何内容都将包含适当类型的父对象和子对象的属性。 这个技巧对我来说是纯粹的魔力 。