【问题标题】:C# Code Not Recognizing Itself? [closed]C# 代码无法识别自己? [关闭]
【发布时间】:2016-02-19 15:59:14
【问题描述】:

我受够了,我不知道这里出了什么问题。我有一个带有一个参数的构造函数的 DLGAnalysis 对象,我正在从单元测试类调用构造函数。

这是DLGAnalysis 对象:

class DLGAnalysis
{
    public DLGAnalysis(string DLG)
    {
        _DLG = DLG;
        _namespaceAnalyses = new List<NamespaceAnalysis>();
    }
}

该课程还有更多内容,但不会影响问题。这是单元测试部分:

[TestClass]
public class DLGAnalysisTests
{
    // Blue line here
    private DLGAnalysis dlgAnalysis;
    private const string TestDLGName = "TestDLGName";

    [TestInitialize]
    public void TestSetup()
    {
        // Error here
        dlgAnalysis = new DLGAnalysis(TestDLGName);
    }
}

“DLGAnalysis”下的蓝线表示:

'AnalysisXMLParser.DLGAnalysis' is inaccessible due to its protection level

new DLGAnalysis(TestDLGName)下面的红线说:

'AnalysisXMLParser.DLGAnalysis' does not contain a constructor that takes 1 arguments

DLGAnalysis 对象显然有一个带有 1 个参数的公共构造函数。我不知道这里发生了什么。有什么问题?我应该删除文件并重新开始吗?

【问题讨论】:

  • 公开课 DLGAnalysis
  • class之前添加public
  • 如果你 dlgAnalysis 在同一个可执行文件中还是在不同的 DLL 中?如果你定义类 DlgAnalysys public 也会出现问题吗?

标签: c# constructor public


【解决方案1】:

您忘记设置班级的保护级别

 public class DLGAnalysis // <== public
 {

不设置保护级别默认该类为internal

由于您的单元测试项目可能在不同的程序集中,它无法访问internal 类。

【讨论】:

  • 只是为了更清楚,不设置保护级别默认该类为internal
  • 我……哇。我觉得自己太无能了。我一直坐在这里,在DLGAnalysis 前面重新输入public,希望能有所作为。
  • @KieranPaddock 当您满意时,别忘了给已接受的答案打上绿色复选标记(在它的上下箭头下方)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 2015-02-12
  • 2022-08-09
  • 2017-11-08
  • 2019-03-05
  • 2018-03-01
相关资源
最近更新 更多