C# 泛型类中可接受的类型对接口中使用的类型的限制
又是我 我希望你能再次帮助我(并且再次理解我想问的问题) 我有接口:C# 泛型类中可接受的类型对接口中使用的类型的限制,c#,.net,generics,C#,.net,Generics,又是我 我希望你能再次帮助我(并且再次理解我想问的问题) 我有接口: public interface i { string a {get;set;} int b {get;set;} classname c {get;set;} } 我想讨论一下泛型类: public class someclass<T> { T _value; public sobeclass(T value) { _value = value; } 公共类so
public interface i
{
string a {get;set;}
int b {get;set;}
classname c {get;set;}
}
我想讨论一下泛型类:
public class someclass<T>
{
T _value;
public sobeclass(T value)
{
_value = value;
}
公共类someclass
{
T_值;
公共sobeclass(T值)
{
_价值=价值;
}
但是我不希望T只能有i接口的类型
我希望你能理解我
感谢您的帮助您可以使用:
公共类someclass
T:我在哪里
{
...
}
您可以使用:
公共类someclass
T:我在哪里
{
...
}
您可以使用:
公共类someclass
T:我在哪里
{
...
}
您可以使用:
公共类someclass
T:我在哪里
{
...
}
请注意,T
可以是实现I
的类,也可以是扩展I
的接口,或者I
本身。此方法允许我将T实例放置在接口的位置,例如,当类C:I时,我可以将C或I放置在T的位置,但我需要放置C。a@Aht您的意思是要约束T
若要string
、int
、或classname
,您不能这样做。如果您有一组有限的不相关类型,则必须为这些类型中的每一个提供重载。或者找到这些类型中的共同点,使用和约束t
抽象到IAdapter
-但我认为您的类型没有有什么共同点。@Aht这是一个。发布一个新问题,描述你在排序数据时遇到的问题,发布你当前的解决方案和代码。但听起来你需要的是LINQ。请注意,T
可以是实现I
的类,也可以是扩展I
的接口,或者I
本身。这种方法od允许我在接口中放置T实例的位置,例如当类C:I时,我将能够放置C或I代替T,但我需要放置C。a@Aht您的意思是要将T
约束为string
、int
或classname
?您不能这样做。如果您有一组有限的不相关类型,则必须提供ide重载这些类型中的每一个。或者找到这些类型中的共同点,使用和约束T
抽象到IAdapter
-但我认为您的类型没有任何共同之处。@Aht这是一个问题。发布一个新问题,描述您在排序数据时遇到的问题,并发布您当前的解决方案和您的答案r代码。但听起来LINQ是您需要的。请注意,T
可以是实现I
的类,也可以是扩展I
的接口,或者是I
本身。此方法允许我将T实例放置在接口的位置,例如,当类C:I时,我可以将C或I放置在T的位置,但我需要放置C。a@AhtY您的意思是要将T
约束到string
、int
或classname
?您不能这样做。如果您有一组有限的不相关类型,则必须为这些类型中的每一个提供重载。或者找到这些类型中的共同点,使用将其抽象出来,并将约束T
约束到IAdapter
-但我认为您的类型没有任何共同之处。@这是一个问题。发布一个新问题,描述您在排序数据时遇到的问题,并发布您当前的解决方案和代码。但听起来您需要的是LINQ。请注意,t
可以是实现I
的类,也可以是扩展的接口>I
,或I
本身。此方法允许我将T实例放置在接口的位置,例如,当类C:I时,我将能够放置C或I代替T,但我需要放置C。a@Aht您的意思是要将T
约束为string
、int
或classname
?您不能这样做。如果您有限制对于一组不相关的类型,您必须为这些类型中的每一个提供重载。或者查找这些类型之间的共同点,使用抽象,并将约束T
约束到IAdapter
-但我认为您的类型没有任何共同点。@Aht这是一个。发布一个新问题,描述您在排序时遇到的问题数据,并发布您当前的解决方案和代码。但听起来LINQ是您所需要的。
public class someclass<T>
where T : I
{
...
}