C# 继承其泛型类型的泛型类
可能的重复项:C# 继承其泛型类型的泛型类,c#,generics,C#,Generics,可能的重复项: 我试图创建一个从其泛型类型继承的泛型类(在1.trunt中)。看来这是不可能的。但在另一次尝试中,我必须投射该对象。这个问题有什么设计上的解决方案吗 // #1 Attempt public interface IFoo { } public class Generic<T> : T { } public void play () { IFoo genfoo = new Generic<IFoo> (); } /#1次尝试 公共接口IFo
我试图创建一个从其泛型类型继承的泛型类(在1.trunt中)。看来这是不可能的。但在另一次尝试中,我必须投射该对象。这个问题有什么设计上的解决方案吗
// #1 Attempt
public interface IFoo { }
public class Generic<T> : T { }
public void play ()
{
IFoo genfoo = new Generic<IFoo> ();
}
/#1次尝试
公共接口IFoo{}
公共类泛型:T{}
公共虚空游戏()
{
IFoo genfoo=new Generic();
}
/#2次尝试。浇注料溶液
公共接口IAnything{}
公共接口IFoo2:IAnything{}
公共类Generic2:IAnything{}
公共空间播放2()
{
IFoo2 genFoo=(IFoo2)新的Generic2();
}
你所做的违背了一般目标
我怎么能用这样的东西:
Generic<int> intgen = new Generic<int>(); // Impossible
Generic intgen=new Generic();//不可能的
问题是泛型定义了一种类型不特定的行为。您的泛型是特定于类型的,因为它必须继承它。Generic用于封装在混合这两种功能时无法在继承中表达的功能,我可以告诉你,不会是很好的混合我不明白你在尝试1中提供的代码的意义。为什么要继承一个类,然后将该类作为泛型参数传递 尽管如此,仍支持泛型继承,但其实现方式不同,请查看此链接,它可能会让您了解:
希望这有帮助。您不能这样做,因为泛型定义中的t是类型定义,而不是真正的类。不过,我不确定您想要完成什么,因为在我看来,您的问题可以通过简单的继承来解决。如果您试图向类中添加某些行为,则可以简单地使用泛型并从中派生:
public class Behavior<T>
{
...
}
public class DerivedBehavior<T> : Behavior<T>
{
...
}
公共类行为
{
...
}
公共类衍生行为:行为
{
...
}
我看不出这是可能的,无论是否使用铸造。你想干什么?根据您的场景,您可能正在寻找类似Castle.DynamicProxy的东西,或者可能是一个模拟框架……拥有一个也必须从泛型类型继承的泛型类有什么意义?它违背了一般的目标。你说的继承或实现是什么意思?你说“inherit”,但给出了一个接口作为例子。另外,这里有很多好的信息:另外,昨天也有人问过这个问题:List List=newlist();/代码>实际上,不,它是非特定类型的,直到您实例化它,所以应该允许从泛型类型继承,这是一个跛脚的约束链接似乎已断开。
public class Behavior<T>
{
...
}
public class DerivedBehavior<T> : Behavior<T>
{
...
}