C# 在这种情况下定义泛型类
我在C#4.0中使用泛型。这是我的代码:C# 在这种情况下定义泛型类,c#,.net,generics,C#,.net,Generics,我在C#4.0中使用泛型。这是我的代码: public class Class1 { } public class SubClass1 : Class1 { } public class Class2 { } public class SubClass2 : Class2 { } public class GenericClass1<T1, T2> where T1 : Class1 where T2 : Class2 { } public class My
public class Class1
{
}
public class SubClass1 : Class1
{
}
public class Class2
{
}
public class SubClass2 : Class2
{
}
public class GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
// error here
public class GenericClass2<GenericClass1<T1, T2>>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass2 : GenericClass2<MyClass1>
{
}
公共类1
{
}
公共类第1子类:第1类
{
}
公共课2
{
}
公共类子类2:类2
{
}
公共类GenericClass1
其中T1:Class1
其中T2:Class2
{
}
公共类MyClass1:GenericClass1
{
}
//这里出错
公共类GenericClass2
其中T1:Class1
其中T2:Class2
{
}
公共类MyClass2:GenericClass2
{
}
编译GenericClass2“类型参数声明必须是标识符而不是类型”时出错。任何人都可以帮我解救或者找到一个解决这个案件的办法。谢谢。试试这个:
public class GenericClass2<TGeneric, T1, T2>
where TGeneric: GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
公共类GenericClass2
其中TGeneric:GenericClass1
其中T1:Class1
其中T2:Class2
{
}
不幸的是,您不能在类定义中使用嵌套声明,例如:GenericClass2
。您可以使用以下代码:
public class GenericClass1<T1, T2>
where T1: Class1
where T2: Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
public class GenericClass2<T1, T2, T3>
where T1: Class1
where T2: Class2
where T3:GenericClass1<T1, T2>
{
}
public class MyClass2 : GenericClass2<SubClass1, SubClass2, MyClass1>
{
}
公共类GenericClass1
其中T1:Class1
其中T2:Class2
{
}
公共类MyClass1:GenericClass1
{
}
公共类GenericClass2
其中T1:Class1
其中T2:Class2
其中T3:GenericClass1
{
}
公共类MyClass2:GenericClass2
{
}
您也可以像下面这样使用-
public class Class1
{
}
public class SubClass1 : Class1
{
}
public class Class2
{
}
public class SubClass2 : Class2
{
}
public class GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
public class GenericClass2<U>
where U : GenericClass1<SubClass1, SubClass2>
{
}
public class MyClass2 : GenericClass2<MyClass1>
{
}
公共类1
{
}
公共类第1子类:第1类
{
}
公共课2
{
}
公共类子类2:类2
{
}
公共类GenericClass1
其中T1:Class1
其中T2:Class2
{
}
公共类MyClass1:GenericClass1
{
}
公共类GenericClass2
其中U:GenericClass1
{
}
公共类MyClass2:GenericClass2
{
}
我们在这里无法处理任何问题。你没有发布你的完整代码,你没有发布你想要实现的,你甚至没有发布错误。你可以做得更好。阅读我的代码,你就会明白我的目的。编译时会出现错误。我需要一个帮助如何解决它当使用genericWhat使你认为我会打开VS并为你编译它,当你有错误的权利在你面前,可以张贴在这里?对不起。我不知道嵌套泛型,所以很难解释。我想在我的代码中使用嵌套泛型,我需要找到解决方案。你需要找到解决方案,但你甚至不能遵守基本的SO标准,比如实际发布收到的错误消息。那太糟糕了。我要走了,祝你好运找到解决你问题的办法。这个办法有效。但是,我必须重复类名两次。如您所见,MyClass1正在使用from Subclass 1和Subclass 2,但我们在MyClass2的定义中再次重复了它->为什么.net compile无法自动理解:(