2011-11-05 24 views
0

我真的想這樣做......爲什麼不能聲明一個也繼承的通用基類?

public class BaseController<T> where T : IPageModel, Controller 

但視覺工作室犯規喜歡它。控制器是MVC中的一個類。我的頁面模型可以確保獲得某些模型的東西。我的語法錯了嗎?

+0

什麼是應該繼承/實現呢? 'BaseController '到'Controller'和'T'到'IPageModel'? – BoltClock

回答

8

正確的語法是:下面的where關鍵字

public class BaseController<T>: Controller where T : IPageModel 

一切都被認爲是通用的約束聲明。在你的情況下,你想讓你的類從Controller派生,所以你首先指出這一點,並在最後指定通用約束。

現在你的實際控制人也從這個基本控制器得出:

public class FooController: BaseController<Foo> 
{ 
    ... 
} 

這裏顯然Foo必須實現IPageModel這是由通用約束強制執行:

public class Foo: IPageModel 
{ 
    ... 
} 
+0

非常感謝! – Exitos

相關問題