2017-09-28 45 views
1

我有4個靜態幫助器方法,如果可能的話我想合併成一個。每種方法都與輸入參數數據類型相同,並在ReturnDto和ReturnDto類型中設置一個值。我對泛型相當陌生,但不確定這是否可行,而不是有4種強類型方法。c#泛型:我可以結合使用不同的返回/輸入數據類型的重載方法嗎?

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 }; 
} 
+1

在你的例子中,val2和val3是什麼? – Chris

回答

6

是:

private static ReturnDto<T> MethodName<T>(T val) 

如果替代Tgeneric type parameter)與任何特定類型的你會得到你所期望的方法。把T想象成任何類型的佔位符。如果不是任何類型是有效的,那麼你可以將它約束爲符合某些規則;請閱讀this瞭解更多信息。

另外值得注意的是,類型推斷允許你調用該方法,而不必實際狀態泛型類型:

var returnDto = MethodName(1); //instead of MethodName<int>(1) 

T通過這intval類型推斷;編譯器有足夠的信息來確定需要明確聲明它的T的類型。

+0

您還應該注意,通過提供特定的類型作爲參數,調用時不需要指定通用類型。 – krillgar

+0

@krillgar好點。 – InBetween

相關問題