我有一個包裝IEnumerable<T>
,幷包含一些額外的邏輯,實現我們稱之爲IMyIterable<T>
的接口類型。一方面,我希望人們能使用LINQ方法來過濾和處理IMyIterable<T>
(通過實際應用到底層的對象),但另一方面,我還是想流利地暴露IMyIterable<T>
的定製實例功能(例如狀態信息)在應用LINQ方法之後。例如簡潔的語法來調用LINQ方法調用後實例方法
var query = myIterable.Select(x => x.whatever);
//query is now of a completely different type than IMyIterable<T>
var result = query.MyCustomThingy();
//But I really want MyCustomThingy to work too.
我認識的一個解決辦法是:
var query = myIterable.Linq(x => x.Select(y => y.Whatever));
但額外的支架是不體面的我。有沒有其他方法可以做到這一點?我實際上並沒有要求方法Select()
返回一個自定義類(儘管如果有完整的方法來做到這一點,例如涉及代碼生成,我肯定會登上),只是一些整潔的語法。
哦!我不知道。不過,儘管如此,我希望我能夠避免必須實施噸和噸的單線。 – GregRos