2011-06-09 208 views
0

在SolutionA(名稱空間名稱)中,我正在通過接口(IClassA)從另一個類(Engine)和此類調用內部類(ClassA)的memeber(functionA())。從外部訪問內部成員

IClassA聲明此功能 引擎調用此函數並使用其他方法(此例中爲smame方法名稱)。

所以如果我想在另一個解決方案中調用這個內部成員。的iA後

using SolutionA; 


IClassA iA; 

iA = new Engine(); 

iA.fuctionA(); 

我想這應該給泛函時,我做了,但智能感知沒有什麼錯在這裏給..whats:

所以在溶液B

我能做到這一點[。] ?

爲什麼我沒有得到SolutionB中的functionA?我的architechure

更多信息:

//IClassA.cs 
namespace namespaceA 
{ 
internal class ClassA 
{ 
    public string FunctionA(){} 
} 
} 

//Engine.cs 

namespace namespaceA 
{ 
public class Engine() : IClassA() 
{ 
    public IClassA.FunctionA(){} 
} 
} 

// IClassA.cs 
namespace namespaceA 
{ 
public interface IClassA() 
{ 
    string FunctionA(string data); 
} 
} 

//ClassB.cs 

namespace namespaceB 
{ 
using namespaceA; 

internal class Classb 
{ 
    IClassA engine = new namespaceA.Engine(); 

    engine.FunctionA(); //here i am unable to get fuuction 
} 
} 
+0

如果您有兩種解決方案,是否需要使用[InternalsVisibleTo]?(http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx) – Rob 2011-06-09 13:25:39

回答

4

是否IClassA接口聲明的功能?我的猜測是,它沒有。由於編譯時類iAIClassA,編譯器(和Intellisense)將只允許您使用IClassA的成員。

0

這不太可能是您的問題,但我會提及它,因爲這是另一個可能導致您的症狀的問題。如果functionA具有[EditorBrowsable(EditorBrowsableState.Never)]屬性,則當您處於不同的程序集中時,它不會顯示在Intellisense中。雖然在這種情況下,忽略Intellisense並使用functionA仍然可以讓程序編譯。

+0

不允許編譯它的賦值錯誤 – Jaison 2011-06-09 14:05:55