【发布时间】:2011-06-07 21:14:35
【问题描述】:
出于继承目的,我希望提供以下我自己无法编写的类:
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 是什么以及 Wrapper 需要做什么?
-
常规继承有什么问题?已经实现的那种?
-
'扩展' ? c#,你的意思是java吗?
-
我相信他想扩展
G类型对象的功能。但这不正是 .Net 中使用的扩展名。请参阅下面的示例。 -
您是否尝试使用装饰器模式?见:dofactory.com/Patterns/PatternDecorator.aspx#_self1
标签: c# .net class inheritance wrapper