我有工作了以下方法:無法轉換表達式類型返回類型
public Option<IAppSettings> GetFirst<T>() where T : IAppSettings
{
return _sources.Where(x=>x.GetType() == typeof(T)).FirstOption();
}
List<IAppSettings> _sources;
,但是,我想改變簽名:我是回通用T
public Option<T> GetFirst<T>() where T : IAppSettings
注而不是IAppSettings
我得到錯誤(截斷類型):
不能表達型
Option<IAppSettings>
轉換爲Option<T>
我知道這事做泛型,但他們承認吸....我用盡的in
,out
,interface
,delegate
不同的手段。 ..但沒有工作,因爲這是一個使用實例變量的非泛型類的方法。
這甚至可能嗎?
更新思想
我必須改變類型規格Option
?如果是這樣,我猜它必須是Option<in T>
?我說,只是因爲Option[+A]
我有源Option
Scala的Option
鍵入,但它是改變和推動了痛苦......這樣想我會先問在這裏,但會嘗試,未來
選項是來自my fork of scalesque
這可能取決於哪種類型的泛型允許選項否?應用相同嗎? –
只用小片段很難說。例如,包含類是否也包含泛型T參數?如在'公共班級父 {}'?在這種情況下,該泛型可能會影響該方法。 –
@TravisJ我說包含的類不是通用的。我只是更新以清楚說明'sources'是一個'List',儘管 –