我有一个自定义的应用程序数据类,我想通过成员子类对其数据进行分类,例如用户数据类。然而,userdata 类不应在 applicationdata 类之外的其他地方实例化,但仍可通过 applicationdata 类访问。这可能吗。
为了说明我希望能够像这样访问类:ApplicationData.UserData.SomeProperty
然而,在 ApplicationData 类之外,它不应该是这样的实例: Dim ud as new UserData
public class ApplicationData
{
private UserData user = new UserData();
public UserData User
{
get
{
return user;
}
}
public class UserData
{
internal UserData()
{
}
}
}
这与您所描述的不完全一样,因为仍然可以在 ApplicationData 类之外创建一个 UserData 实例 - 但只能在同一个程序集中。另请注意,您必须以不同于您公开的属性 (User) 的方式命名类 (UserData)。
而不是像这样嵌套类,我将采取的方法是拥有一个公共 IUserData 接口和一个内部 UserData 类。然后,您的 ApplicationData 类可以公开 IUserData 类型的 UserData 属性。
我解决这个问题的方法如下: 编写一个公共接口 IUserData 使 UserData 实现接口 IUserData 并使这个类成为私有 ApplicationData 将通过一个名为 UserData 的 IUserData 类型的属性公开该类
只需使用内部构造函数。
程序集之外的任何人都无法创建实例。