我有一個返回一個枚舉的WebApi控制器操作。我有一個MediaTypeFormatter掛鉤瞭解如何序列化這個枚舉。問題在於枚舉(被設計)懶洋洋地評估。這樣可以很好,除了枚舉必須在完成使用後才能處理。不幸的是,由於懶惰的評價,如果我做這樣的事情:序列化後ASP.NET WebApi操作處理?
public IEnumerable<MyClass> Get()
{
using (var disposableEnumerable = GetData())
{
return disposableEnumerable;
}
}
串行得到它保持在此之前disposableEnumerable配置。這會導致序列化失敗,因爲源已被丟棄。
在另一方面,如果我不把它包裝在using語句,像這樣:
public IEnumerable<MyClass> Get()
{
return GetData();
}
然後這是從來沒有佈置和我泄露的對象。
什麼是確保我的一次性處置後序列化的最佳方式是什麼?
注意:在enumerable上調用ToList不是一個選項。我返回一個枚舉而不是具體列表的原因是出於內存原因。枚舉值很大,在枚舉過程中創建的對象也非常大。