在SolutionA(名称空间名称)中,我从另一个类(Engine)调用内部类(ClassA)的memeber(functionA()),并通过接口(IClassA)调用此类。
IClassA声明了这个功能 Engine调用此函数并使用另一种方法(在本例中为smame方法名称)。
所以,如果我想在另一个解决方案中调用此内部成员。
所以在解决方案B中
我可以这样做:
using SolutionA;
IClassA iA;
iA = new Engine();
iA.fuctionA();
我想当我在iA之后执行[。]时它应该给functionA,但是intellisense不会在这里给出错误...
为什么我没有在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 :(得分:4)
IClassA
接口是否声明了该函数?我的猜测是它没有。鉴于iA
的编译时类是IClassA
,编译器(和Intellisense)只允许您使用IClassA
的成员。
答案 1 :(得分:0)
这不太可能是你的问题,但我会提到它,因为这是另一个可能导致你症状的问题。如果functionA
具有[EditorBrowsable(EditorBrowsableState.Never)]
属性,则当您在不同的程序集中时,它将不会显示在Intellisense中。虽然在这种情况下,忽略Intellisense并使用functionA
仍然允许程序编译。