【问题标题】:Class inaccessible due to its protection level [closed]由于其保护级别而无法访问的类[关闭]
【发布时间】:2020-07-07 01:14:51
【问题描述】:

我有一个项目 IBSampleApp 在两个解决方案中使用,它的类在两个解决方案中都出现以下编译器错误。

由于其保护级别而无法访问

Execution 解决方案中 IB Execution 项目的 IBClient.cs 出错:

IBSampleApp 项目中的 TickPriceMessage 类:

在 IBSampleApp 项目的 AssemblyInfo.cs 中添加了 InternalsVisibleTo 属性(@JamesFaix 推荐):

问题仍然存在。如何使 TickPriceMessage 类可用于两种解决方案?

【问题讨论】:

  • 代码有问题,请不要作为图片。
  • Project.Execution 程序集名称从何而来?我在任何地方都没有看到它......
  • Johnny,我已将 InternalsVisibleTo 属性更改为 Project.IB Execution。没有帮助

标签: c# class project


【解决方案1】:

您在内部类上有一个公共构造函数。由于缺少任何访问修饰符,c# 默认为the most restricted for the type,对于像你这样的类,它是internal

// this is an "internal" class
class TickPriceMessage
{
   ...
}

【讨论】:

    【解决方案2】:

    您应该将 TickPriceMessage 类声明为public,默认为internal

    【讨论】:

    • 这不是 OP 的 InternalsVisibleTo 的用途吗?
    • @John 我不会推荐这种方法,除非你想要一些非常受限的可见性场景。最常用的方法是将类声明为 public。
    • 无法获得 InternalsVisibleTo 属性工作。公开所有类,解决编译器错误问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2011-09-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    相关资源
    最近更新 更多