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>
{
  ...
}