簡體   English   中英

C#可以在方法中返回類型嗎?

[英]Can C# return a type in a method?

我可以有類似的東西嗎?

AMess.Foo = MessyData.GetData<MessyData.GetType(key)>(key);

我的問題類似於我的示例。 我有一個動態輸入的數據源,所以我必須做一些確定數據類型的事情。 但是到處都進行類型檢查會很麻煩。 所以我想也許我可以有一些代碼只是告訴我它是什么類型。 我可以這樣做嗎?

還是更好的解決方案?

請不要擔心AMess.Foo ,它吃了所有東西。

不,不能。 您必須改為使用反射。 我目前尚未在計算機上安裝Visual Studio,因此目前無法測試語法,但這應該很接近:

var type = MessyData.GetType(key);
var castMethod = MessyData.GetType().GetMethod("GetData").MakeGenericMethod(type);
AMess.Foo = castMethod.Invoke(MessyData, new[] { key });

不能。泛型類型參數必須在編譯時解析。

如果您使用:

MessyData.GetData<SomeType>(key);

那么SomeType必須是特定類的名稱(或接口,結構等)。 它永遠不可能是您所提問題中的一種表達方式

如果讓類型被推斷,如:

MessyData.GetData(key); // infer type arg

則調用中使用的類型是key變量的編譯時類型, 而不是運行時類型。 這些類型可以不同。

如果您確實想要動態類型化,則可以讓GetData接受一個dynamic類型的參數(該方法將是非通用的)。 但是您要解決的問題是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM