我正在寻找一种为任何对象创建通用包装器的方法 包装器对象的行为就像它包装的类一样,但是能够有更多的属性,变量,方法等,例如,对象计数,缓存等。
假设包装类被称为 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>
,它可以处理原始类型和复合类型(尽管在我目前的情况下我我很高兴只包装自己的课程。)
建议?
感谢。
答案 0 :(得分:4)
答案 1 :(得分:2)
也许是这样的:
public class Wrapper<T>
{
public readonly T Object;
public Wrapper(T t)
{
Object = t;
}
}
然后你可以按如下方式使用它:
Wrapper<Square> mySquare = new Wrapper<Square>(new Square(2.5));
Console.Write("Edge {0} -> Area {1}", mySquare.Object.EdgeLength, mySquare.Object.Area);
答案 2 :(得分:2)
DynamicProxy可能是您的解决方案。