job*_*ick 1 c# generics overloading type-conversion strong-typing
我有4个静态助手方法,如果可能的话我想要合并为一个.除输入参数数据类型外,每种方法都相同,并在ReturnDto和ReturnDto类型中设置值.我对Generics相当陌生,但除了拥有4种强类型方法之外,我甚至不确定这是否可行.
private static ReturnDto<int> MethodName(int val)
private static ReturnDto<string> MethodName(string val)
private static ReturnDto<bool> MethodName(bool val)
private static ReturnDto<DateTime> MethodName(DateTime val)
{
//do some stuff here...
return new ReturnDto<DateTime> { Val = val, Val2 = val2, Val3 = val3 };
}
Run Code Online (Sandbox Code Playgroud)
是:
private static ReturnDto<T> MethodName<T>(T val)
Run Code Online (Sandbox Code Playgroud)
如果用任何特定类型替换T(泛型类型参数),您将获得所期望的方法.可以将其T视为任何类型的占位符.如果没有任何类型有效,那么您可以限制它以符合某些规则; 阅读本文以获取更多信息.
另外值得注意的是,类型推断允许您调用此方法而无需实际声明泛型类型:
var returnDto = MethodName(1); //instead of MethodName<int>(1)
Run Code Online (Sandbox Code Playgroud)
T通过类型推断出的val是int; 编译器有足够的信息来确定T你需要明确说明它的类型.