2010-09-20 147 views
1

構造函數不具有通用名稱,但與類名稱相同,因此在接口類中強制執行它們時存在語法問題。什麼是語法,那麼對於這樣的事情:如何使用Interface類強制構造函數方法?

Interface IInterface { 

    <class-name-of-implementer>(string param) {} 
} 

我創建一個初始化方法看到的問題是,你的framwork的客戶端應用程序/庫可以忘記打電話吧!在我看來,如果構造函數像其他一些語言一樣被命名爲__Constructor,那麼它就不可能僅僅因爲語法!

語法不應該驅動設計而是語義。

回答

3

你不能,我害怕。

一般而言,您無法使用這樣的構造函數 - 您會如何調用它?您可以執行一個參數的構造函數上的類型參數,就像這樣:

public class Foo<T> where T : new() 

,但你不能指定任何所需的參數。

我以前認爲,這將是能夠指定接口的靜態成員(包括構造函數)是有用的,類型約束(和使用它們的成員根據這些約束類型參數的表達式) 。有關更多詳細信息,請參閱my blog post

0

接口中不允許使用構造函數。

解決方法是在構造函數中放入一個initialize()方法,並在此處執行所有與構造函數相關的工作。凌亂,但這就是你所能做的。

2

你不能這樣做。你最好的選擇將是

interface IInterface 
{ 
    void Initialize(string param); 
} 

其中初始化做一些初始化工作(如果這是你之後)。

+0

我看到初始化的問題是,你可以忘記叫它!在我看來,如果構造函數像其他語言一樣被命名爲__Constructor,那將是可能的。 – user310291 2010-09-20 11:38:55

相關問題