对象的C#包装器

时间:2010-05-28 09:22:07

标签: c# wrapper

我正在寻找一种为任何对象创建通用包装器的方法 包装器对象的行为就像它包装的类一样,但是能够有更多的属性,变量,方法等,例如,对象计数,缓存等。

假设包装类被称为 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>,它可以处理原始类型和复合类型(尽管在我目前的情况下我我很高兴只包装自己的课程。)

建议?

感谢。

3 个答案:

答案 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)

来自Castle项目的

DynamicProxy可能是您的解决方案。

相关问题