2011-06-21 21 views
0
class Beta : IBeta 

class AlphaBeta<TBeta> : TBeta 
    where Tbeta : IBeta 

Tbeta需要是一个类型...编译器错误。作为基本类型的C#模板?如果不 。怎么样?

我怎样才能让AlphaBeta成为测试版?

TY

+1

你的问题有点混乱。你能否重新说出它来更好地解释你想要发生的事情? –

+1

根据您的需要,您可以通过使用泛型参数定义基本类型并定义递归约束来做类似的事情:'abstract class Base where T:Base ' - 请参阅:http://www.somethingorothersoft.com/2010/09/27/crtp-in-c/ –

+0

@ Merlyn Morgan-Graham .. awsome。谢谢。现在我在正确的轨道上。 – jaybny

回答

3

你不能做到这一点 - 在.NET泛型是不一样的使用C++模板。

你可以给AlphaBetaTBeta类型的成员变量,但你不能让它TBeta派生

如果您可以提供更多关于您在“更大图片”级别尝试做什么的信息,我们可能会提供更多帮助。实施IBeta是可以接受的吗?

+0

是的。即时尝试避免implimenting IBeta ..所有我会做的是将所有内容转发到Beta。 – jaybny

+0

@jaybny:基本上这就是你必须要做的。 –

+0

所以后续问题.. C#没有多重继承..你如何避免不断拷贝粘贴和装饰? – jaybny

2

我建议

class AlphaBeta<T> : Beta 
     where T : IBeta 

因为T是C#泛型类型的处理程序。然后使用约束强制T成为继承IBeta类的类。

相关问题