我有一個非常簡單的設計:C#能否利用隱式嵌套泛型參數?
通用接口
IElement<>
有一個泛型參數T
:interface IElement<T> { }
- 管理
IElement<>
在ISource<>
我另一個通用接口ISource<>
有一個方法返回基礎類型IElement<>
:
T GetSomething();
這是我可以做的:
interface ISource<TElem, T>
where TElem : IElement<T>
{
T GetSomething();
}
class IntegersSource : ISource<IElement<int>, int>
{
public int GetSomething()
{
return 1;
}
}
但嵌套類型,這裏int
,必須重複。
我想是這樣的:
class IntegersSource : ISource<IElement<int>>
{
public int GetSomething()
{
return 1;
}
}
我已經試過:
interface ISource<TElem>
where TElem : IElement<T>
{
T GetSomething();
}
但是,編譯器不開心與此語法。
我擔心我錯過了一些明顯的東西,但是什麼?
感謝您的任何見解。
編譯器應該如何知道最後一個列表中的「T」是什麼? –
你真的需要'TElem'嗎?ISource <> T'實現內部不會有'IElement'就足夠了嗎? –
Dennis
我根本沒有看到'IElement'接口的任何額外好處。我錯過了什麼嗎? –
Alex