我試圖將通用方法參數轉換爲其類型。編譯器說我不能轉換它將通用T轉換爲C#
public ProvideRequest ProvideRequest<T>(int numberOfLines,
string ServiceType,
T addressIdentifier)
{
var provideRequest = new ProvideRequest();
provideRequest.NumberOfLines = numberOfLines;
provideRequest.ServiceType = ServiceType;
Type t = typeof(T);
switch (t.GetType().Name)
{
case nameof(GoldAddressKeyIdentifierType):
provideRequest.RequestIdentifier =
Convert.ChangeType(addressIdentifier, typeof(GoldAddressKeyIdentifierType))
break;
}
return provideRequest;
}
任何幫助,這將不勝感激。
它是一個錯字't.GetType()。Name'?它應該只是't.Name' –
泛型類型隨後測試其類型參數的具體類型並使用一系列以類型***爲前提的條件來修改它們的行爲不應該是通用的***。除少數情況外,這是一種濫用行爲。 – spender
簡單地通過使用'publicRequestRequestRequestRequest(int numberOfLines,stringServiceType,GoldAddressKeyIdentifierType addressIdentifier)'來處理特定於類型的操作並放棄轉換想法,您的代碼將得到顯着改進。您最終會得到更強大的類型檢查和更易於調試的代碼。 –
spender