2011-06-09 211 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