我有以下代码返回错误“'对象'不包含带有x参数的构造函数”。试图调用基本构造函数。

解决方案1,项目1

namespace Project.Sub.A
{
  internal class Foo
  {
    internal Foo(int a, long b) {}

  }
}


解决方案1,项目2

namespace Project.Sub.B{
  internal class Bar : Foo
  {
    internal Bar(int a, long b,long c) :base(a,b+c) {}

  }
}


我不知道为什么这不起作用。我的命名空间可能配置错误吗?

最佳答案

internal访问是按程序集而不是名称空间进行的。

因为基类中的构造函数被声明为internal,所以其他项目中的子类无法访问它。尝试将其更改为protected internal或仅更改为protected

更新

只是注意到基类也是internal。如果要在第二个项目中看到它,则需要将其设置为public。或者,您可以在Project1的[assembly:InternalsVisibleTo("Project2")]中添加AssemblyInfo.cs。 (不过,我个人不会推荐此选项。)

关于c# - 调用基本构造函数不起作用C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9396449/

10-12 06:11