【发布时间】:2013-01-09 07:45:25
【问题描述】:
在C#中,是否可以这样写:
public class MyClass<T> : T
where T : class, new()
{
}
我知道上面的实现无法编译,但我实际上想要实现的是对未知类型实现某种通用包装器,以便客户端可以像调用类型一样调用包装器,前提是通过参数T,而不是使用类似wrapper.Instance.SomeMember() 的方式调用它。
提前致谢!
【问题讨论】:
-
所以如果你有
class Foo { public string A; },你希望能够做类似MyClass<Foo>.A的事情吗? -
这正是我要找的 :)
-
我明白 :) 出于好奇,您有什么理由愿意这样做而不是
MyClass<Foo>.Instance.A? -
Monads 不能满足您的需求吗? mikehadlow.blogspot.fr/2011/01/…
-
@LukeHennerley:我想让这个类来管理
T类型的对象的实例,这样客户端就不需要关心何时需要创建实例。在非托管世界中,您会谈论智能指针之类的东西。我认为在 C++ 中,我需要的行为可以通过重载this->运算符来实现,返回包含的实例。
标签: c# oop design-patterns generics