【发布时间】:2011-02-25 01:13:42
【问题描述】:
我正在寻找一种方法来为任何对象创建通用包装器。
包装器对象的行为就像它包装的类一样,但能够拥有更多的属性、变量、方法等,例如对象计数、缓存等
假设包装类叫Wrapper,要包装的类叫Square,并且有构造函数Square(double edge_len)以及属性/方法EdgeLength和Area,我想如下使用:
Wrapper<Square> mySquare = new Wrapper<Square>(2.5); /* or */ new Square(2.5);
Console.Write("Edge {0} -> Area {1}", mySquare.EdgeLength, mySquare.Area);
显然我可以为每个我想包装的类创建一个这样的包装类,但我正在寻找一个通用的解决方案,即Wrapper<T>,它可以处理原始类型和复合类型(尽管在我目前的情况下我会很高兴只包装我自己的类)。
建议?
谢谢。
【问题讨论】:
-
你不能在 C# 3.0 之前做到这一点。然而,4.0 版可能允许您通过新的动态类型系统来执行此操作。
-
您能详细说明一下吗?谢谢。