2009-02-07 25 views
23

下面的C#代碼有什麼問題?編譯器報告該錯誤:以下c#代碼的可訪問性錯誤不一致。爲什麼?

可訪問性不一致:參數類型 'ClassLibrary1.Interface1' 比方法 'ClassLibrary1.Class1.Class1(ClassLibrary1.Interface1)'

用下面的代碼不易進入:

interface Interface1<T> 
{ 
    bool IsDataValid(); 
    /* Other interfaces */ 
} 

public class Class1<T> 
{ 
    public Interface1<T> interface1; 

    public Class1(Interface1<T> interface1) 
    { 
     this.interface1 = interface1; 
    } 

} 

我已經設計了不同的代碼使用繼承,但如果有人可以告訴我什麼是上述錯誤,我將不勝感激。

回答

49

你的 「接口1」 是不公開..

public interface Interface1<T> 
{ 
    bool IsDataValid(); 
    /* Other interfaces */ 
} 
+1

doh。謝謝。這很明顯讓我感到尷尬。有趣的是,有時你怎麼看不到這個盲目明顯的東西。 – Crippeoblade 2009-02-07 23:05:55

5

標記您的界面市民:

public interface Interface1<T>

如果你離開了無障礙標籤,則默認爲internal,即只能在程序集內的其他類訪問。

1

第二種解決方案是如果你的界面不公開,那麼不要讓你的類公開在你正在製作界面句柄的地方。