C# 泛型类型的多个位置

C# 泛型类型的多个位置,c#,.net,generics,C#,.net,Generics,我需要指定我的类的泛型类型实现接口,并且也是引用类型。我尝试了下面的两个代码片段,但都没有成功 public abstract class MyClass<TMyType> where TMyType : IMyInterface where TMyType : class public abstract class MyClass<TMyType> where TMyType : class, IMyInterface 公共抽象类MyC

我需要指定我的类的泛型类型实现接口,并且也是引用类型。我尝试了下面的两个代码片段,但都没有成功

public abstract class MyClass<TMyType> 
   where TMyType : IMyInterface
   where TMyType : class

public abstract class MyClass<TMyType> 
       where TMyType : class, IMyInterface
公共抽象类MyClass
其中TMyType:IMyInterface
其中TMyType:class
公共抽象类MyClass
其中TMyType:class,IMyInterface

我无法为一个类型指定多个where子句,是否可以这样做?

后一种语法应该可以(并为我编译)。第一个不起作用,因为您试图在同一类型参数上提供两个约束,而不是在不同的类型参数上

请给出后一种语法不适用于您的简短但完整的示例。这对我很有用:

public interface IFoo {}

public abstract class MyClass<T>
    where T : class, IFoo
{
}
公共接口IFoo{}
公共抽象类MyClass
其中T:class,IFoo
{
}

关于如何将多个
where
子句链接定义为重复链接的问题。如果这个问题真的是重复的,那么这个“完整”的答案必须包含这两种情况

案例1——单个泛型具有多个约束:

公共接口IFoo{}
公共抽象类MyClass
其中T:class,IFoo
{
}
案例2——多个泛型,每个泛型都有自己的约束:

公共接口IFoo1{}
公共接口IFoo2{}
公共抽象类MyClass
其中T1:class,IFoo1
其中T2:IFoo2
{
}

好的,谢谢。你说得对,第二个片段确实有效。抱歉-当我尝试时,我得到的编译错误与此无关。应该好好读的!!
public interface IFoo {}

public abstract class MyClass<T>
    where T : class, IFoo
{
}
public interface IFoo1 {}
public interface IFoo2 {}

public abstract class MyClass<T1, T2>
    where T1 : class, IFoo1
    where T2 : IFoo2
{
}