C# 调用基构造函数不工作#
我有以下代码返回错误“'object'不包含接受x参数的构造函数。”在试图调用基构造函数的行中 解决方案1,项目1C# 调用基构造函数不工作#,c#,constructor,base,C#,Constructor,Base,我有以下代码返回错误“'object'不包含接受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,l
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
,所以其他项目中的子类无法访问它。尝试将其更改为受保护的内部
,或仅更改为受保护的
更新
刚才注意到基类也是
内部的
。如果希望在第二个项目中看到它,则需要将其公开。或者,您可以在项目1的AssemblyInfo.cs
中添加[assembly:InternalsVisibleTo(“项目2”)]
。(不过,我个人不建议使用此选项。)内部表示当前程序集中其他类可见的
因为您正在第二个项目中定义第二个类,所以它无法看到该基本构造函数
试着将Foo类和构造函数都设置为受保护的
,或者内部的
,如果它如您的问题所示位于一个单独的项目中,并且您的基类被标记为内部的,那么它应该无法找到整个类型,更不用说构造函数了
将Foo'accessor更改为public。这里有许多令人困惑的问题
- 首先,您的类在两个单独的项目中被定义为内部类
internal
表示类仅在其自身程序集中可见,而对程序集中外部的客户端代码不可见。Foo应该是公共的,以便可以在其他程序集中使用
- 如果使类Foo在程序集外部可见,则必须从包含类Bar的项目中引用该程序集
- 您还必须确保名称空间也被正确引用
你怎么知道它在另一个项目中?@Jon,因为他这么说。。。解决方案1,项目2。@Vort3x这些名称空间没有任何含义@SteveCzetty谢谢,公众解决了这个问题。我会在8分钟内接受。@Jon是的,它太模糊了,这就是为什么它也被明确声明:)你是说访问修饰符吗?访问器是一种“get”方法,不是吗?