簡體   English   中英

轉換IEnumerable <T> 進入列表 <SomeObject>

[英]Convert IEnumerable<T> into a List<SomeObject>

因此,我正在C#中構建一個小型應用程序,在該應用程序中我有一個要轉換為List的IEnumerable。 這就是我得到的:

var enumerable = SettingsManager.ReadSettings();
var list = enumerable.Cast<Setting>().ToList();

編譯器說無法從用法推斷出ReadSettings。 這是ReadSettings的樣子:

public static IEnumerable<T> ReadSettings<T>()
{
     //Code omitted
     return JsonConvert.DeserializeObject<T[]>(fileAsString).ToList<T>();
}

如果您的方法是通用的,則應提供通用的類型參數。 根據您的用法,我想您使用的是Setting類型,因此您的正確代碼是這樣的:

var enumerable = SettingsManager.ReadSettings<Setting>();
var list = enumerable.ToList();

現在, enumerable具有在編譯時已知的強類型,這就是為什么您可以省略將列表中的每個元素都強制轉換為Setting -type的原因。

如果您不知道停留在提到使用反射在運行時you're實際的類型在這個崗位

編輯:由於您的ReadSettings方法實際上是通過調用ToList生成列表的,因此您可以在第二行上ReadSettings式的第二個ToList ReadSettingsList<T> 另外,更好的方法是在ReadSettings忽略該調用。

您缺少ReadSetting T規范。 您需要這樣的代碼:

var list= SettingsManager.ReadSettings<Setting>();
// continue here

暫無
暫無

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

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