C# 方法返回类型类似于泛型类类型
是否可以设置方法返回类型,如泛型类的类型 我有一门普通课:C# 方法返回类型类似于泛型类类型,c#,generics,C#,Generics,是否可以设置方法返回类型,如泛型类的类型 我有一门普通课: class Generic<T> { public static DataSet test(T input) { //Some logic... } } 类泛型 { 公共静态数据集测试(T输入) { //一些逻辑。。。 } } 另一个类,我称之为泛型类 它适用于以下示例: Generic<int>.test(10);
class Generic<T>
{
public static DataSet test(T input)
{
//Some logic...
}
}
类泛型
{
公共静态数据集测试(T输入)
{
//一些逻辑。。。
}
}
另一个类,我称之为泛型类
它适用于以下示例:
Generic<int>.test(10);
Generic.test(10);
但如果我想用复杂的未知日期类型调用不同的方法,我不知道如何像泛型类型一样放置它们的日期类型
比如说
var data = Data.GetData(); // return List<string,int>
var data2 = Data.GetData2() // return Tuple<List<string>, List<int>>
var data=data.GetData();//返回列表
var data2=Data.GetData2()//返回元组
我尝试使用方法GetType,对于get返回方法类型,类似这样的,但它不起作用
Generic<data.GetType()>.test(data);
Generic.test(数据);
是否可能,类似这样的情况?函数的返回类型在编译时已知。
因此,如果我正确理解了你的问题,你的要求是不可能的TL;DR您不能在运行时设置返回类型。函数的返回类型在编译时已知。
因此,如果我正确理解了你的问题,你的要求是不可能的TL;DR您不能在运行时设置返回类型。不,您不能在运行时指定泛型类型而不进行反射,但可能有其他方法来解决您的问题。您可以将泛型约束放在方法上,而不是类上:
class Generic
{
public static dynamic Test<T>(T input)
{
//Some logic...
}
}
不,您不能在没有反射的情况下在运行时指定泛型类型,但是可能有其他方法来解决您的问题。您可以将泛型约束放在方法上,而不是类上:
class Generic
{
public static dynamic Test<T>(T input)
{
//Some logic...
}
}
test
将如何处理T
您对它没有任何限制,也不将它用于返回类型。为什么不让这个类成为非泛型的,只做动态测试(对象输入)
?测试(T输入)
在最后我想把这个结果列表,元组转换成数据集,我把它放在这里只是泛型的,但我想返回数据集。你能不能从使用泛型类改成泛型方法?所以您改为使用测试(T输入)
?很难说你的泛型类和方法实际上在做什么……用T
测试会做什么?你对它没有任何限制,也不使用它作为返回类型。为什么不让这个类成为非泛型的,只做动态测试(对象输入)
?测试(T输入)
在最后我想把这个结果列表,元组转换成数据集,我把它放在这里只是泛型的,但我想返回数据集。你能不能从使用泛型类改成泛型方法?所以您改为使用测试(T输入)
?很难说你的泛型类和方法实际上在做什么…哦,就是这样。我是泛型类型的新手,我想,当我想使用泛型方法时,我必须有一个泛型类。谢谢。@tomas Nope-只有当您希望泛型类型应用于整个类时才可以。哦,就是这样。我是泛型类型的新手,我想,当我想使用泛型方法时,我必须有一个泛型类。谢谢。@tomas Nope-仅当您希望泛型类型应用于整个类时。