2
以下的意圖實現的接口的方法的約束類型參數是隻允許呼叫IRegistration<Foo>.As<IFoo>
如果Foo
實現IFoo
:到由另一種類型的
interface IRegistration<TImplementation>
{
void As<TContract>() where TImplementation : TContract;
}
這不是由C#3.0編譯器允許的。我得到以下錯誤:
'SomeNamespace.IRegistration.As()' does not define type parameter 'TImplementation'
有沒有辦法解決這個問題,除了把兩個類型參數放在方法聲明中?
這個問題受此啓發other question about Autofac。
嗯,不要認爲這有效 - 接口上的'TContract'與方法上的'TContract'不同。 – 2010-11-04 10:20:46
@蒂姆羅賓遜 - 好點。我正在尋找將編譯和忘記需求的東西......答案已更新。 – Oded 2010-11-04 10:29:22
同意你的更新答案 - 我想不出任何其他方式。 – 2010-11-04 10:38:32