参数类型的可访问性低于单例实现中的方法
本文关键字:于单例 实现 方法 类型 访问 参数 | 更新日期: 2023-09-27 18:22:13
我正在用C#编写一个应用程序,需要一个singleton对象;所以这个类只有一个对象。但是这个类需要有一个引用系统另一个类的对象的列表,所以我添加了这样一个列表作为属性,然后创建了一个方法来添加另一个对象
我认为这是正确的,但我遇到了一个错误,其中参数类型(列表中的类)的可访问性不如方法(以下代码中的AddNew
)。
以下是我目前所拥有的:
namespace One {
public sealed class Singleton {
// Only instance of the class:
private static readonly Singleton instance = new Singleton ();
private List<MyOtherClass> list;
static Singleton() { }
private Singleton() {
list = new List<MyOtherClass>();
}
// Accessor to the property (the instance per se):
public static Singleton Instance {
get {
return instance;
}
}
// Method to add a new object to the list:
public void AddNew(MyOtherClass newObject) {
list.Add(newObject);
}
}
}
对象位于该列表中的类定义如下:
namespace One {
class MyOtherClass {
... // With private attributes and public constructor and methods.
}
}
问题出在哪里?难道不可能实现我想要的吗?该类是公共的,并且位于定义singleton类的同一命名空间中。
问题出在哪里?
正是编译器所说的。MyOtherClass
是一个内部类(隐式),但您已经将其作为参数包含在公共类别中的公用方法中,这是无法做到的。
选项:
- 使
Singleton
内部 - 使
AddNew
内部 - 公开
MyOtherClass
请注意,名称空间与访问修饰符是完全独立的——它们在这里无关紧要。
您的MyOtherClass
是internal
,但Singleton.AddNew
方法是公共的。
如果未指定保护修饰符,则默认情况下,顶级类是内部类。