为了继承的目的,我希望有以下类可用,但我自己无法编写:
class Wrapper<G> : G
{
public Wrapper(G base);
protected G GetBase();
}
它将像往常一样继承G的所有成员,并且这些成员的所有用法都将重定向到在构造期间提供的G。
在像C#这样的语言中增加这个功能是否在技术上可行?
我想使用这个功能的主要用例是:
class Wrapper<G> : G
{
public Wrapper(G g);
}
class IGraphNode<G> where G : IGraphNode<G>
{
IEnumerable<G> ForwardNodes();
IEnumerable<G> BackwardNodes();
}
//Reverses the direction of the graph.
class Reverse<G> : Wrapper<G> where G : IGraphNode<G>
{
public Reverse(G g)
: base(g)
{ }
IEnumerable<G> ForwardNodes()
{
return base.BackwardNodes();
}
IEnumerable<G> BackwardNodes()
{
return base.ForwardNodes();
}
}
G
的对象的功能。但这不正是在.Net中使用扩展的目的吗?请看下面的例子。 - Tomas Jansson