【问题标题】:Accessing internal member from outside从外部访问内部成员
【发布时间】:2011-06-09 12:53:22
【问题描述】:

在解决方案A(命名空间名称)中,我通过接口(IClassA)从另一个类(Engine)和这个类调用内部类(ClassA)的成员(functionA())。

IClassA 声明了这个函数 Engine 调用此函数并使用另一个方法(在本例中为相同的方法名称)。

所以如果我想在另一个解决方案中调用这个内部成员。

所以在解决方案 B 中

我能做到:

using SolutionA;


IClassA iA;

iA = new Engine();

iA.fuctionA();

我想当我在 iA 之后执行 [.] 时它应该给出 functionA ,但是智能感知没有给出 ..这里有什么问题?

为什么我没有在解决方案B 中获得函数A?

关于我的架构的更多信息:

//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
}
}

【问题讨论】:

标签: c# .net class interface accessibility


【解决方案1】:

IClassA 接口是否声明了函数?我的猜测是它没有。鉴于iA 的编译时类是IClassA,编译器(和智能感知)将只允许您使用IClassA 的成员。

【讨论】:

    【解决方案2】:

    这不太可能是您的问题,但我会提到它,因为它是另一个可能导致您出现症状的问题。如果 functionA 具有 [EditorBrowsable(EditorBrowsableState.Never)] 属性,则当您在不同的程序集中时,它不会显示在 Intellisense 中。尽管在这种情况下,忽略 Intellisense 并使用 functionA 仍然允许程序编译。

    【讨论】:

      猜你喜欢
      • 2018-06-26
      • 2011-08-09
      • 2013-10-21
      • 2019-09-03
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 2017-11-13
      • 2012-10-29
      相关资源
      最近更新 更多