![](/img/trans.png)
[英]Using C# generics for specific type support without hardcoding type comparision
[英]Generics without a specific type
我有这个:
class Program
{
static void Main(string[] args)
{
var result = new Result<int, bool> { success = true, Data = 88 };
var result2 = new Result<string, bool> { success = true, Data = "Niels" };
Console.WriteLine(result2.success);
Console.WriteLine(result2.Data);
Console.ReadKey();
}
}
public class Result<T, TU>
{
public TU success { get; set; }
public T Data { get; set; }
}
因此,这是一个具有两个属性的简单泛型类。
我只是想知道如何做到这一点:
var result = new Result<int, bool> { success = true, Data = 88 };
更通用的:)。 因为您仍然必须“说”返回类型是什么: <int, bool>
所以有可能这样做例如:
<T var1, T var2> ?
谢谢
所以我的意思是这样的:
var result = new Result<T var1, T var2> { success = true, Data = 88 };
这样您就可以随心所欲地填写成功和数据(字符串,整数,浮点数,布尔值)。
您可以使用工厂方法从给定参数自动解析类型:
public static class ResultFactory
{
public static Result<T, TU> Create<T, TU>(TU success, T data)
{
return new Result<T, TU> { success = success, Data = data };
}
}
var result = ResultFactory.Create(true, 88);
var result2 = ResultFactory.Create(true, "Niels");
因为您仍然必须“说”返回类型是什么:
<int, bool>
是的,您将必须指定T,TU
类型T,TU
并且不能保持打开状态。 类型必须在编译时关闭。 因此不可能像<T var1, T var2>
那样调用它<T var1, T var2>
除非将它包装在另一个泛型类型或方法中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.