我有一个自定义的applicationdata类,我想通过成员子类对其数据进行分类,例如userdata类。但是,userdata类不能在applicationdata类之外的其他地方实例化,但仍可通过applicationdata类访问。这可能吗。
为了说明我希望能够像这样访问这个类: ApplicationData.UserData.SomeProperty
但是在ApplicationData类之外,不应该像这样实例: Dim ud as new UserData
答案 0 :(得分:3)
public class ApplicationData
{
private UserData user = new UserData();
public UserData User
{
get
{
return user;
}
}
public class UserData
{
internal UserData()
{
}
}
}
这并不完全是你所描述的,因为它仍然可以在ApplicationData类之外创建一个UserData实例 - 但只能在同一个程序集中。另请注意,您必须以与您正在公开的属性(用户)不同的方式命名类(UserData)。
不是像这样嵌套类,而是采用的方法是使用公共IUserData接口和内部UserData类。然后,您的ApplicationData类可以公开IUserData类型的UserData属性。
答案 1 :(得分:0)
我要解决的问题如下: 编写公共接口IUserData 使UserData实现接口IUserData并将此类设为私有 ApplicationData将通过名为UserData的属性IUserData
公开该类答案 2 :(得分:0)
您可以将用户数据定义为抽象类,以便它只能被继承,不能被实例化。有关详细信息,请参阅此link
现在,如果UserData和ApplicationData位于同一个程序集中,您可以使用'internal'关键字。当您对类使用internal关键字时,该类只能在同一个程序集中访问。程序集外部的类无法访问它。有关详细信息,请参阅此link.
Cheerss!
答案 3 :(得分:0)
只需使用内部构造函数。
程序集外部没有人能够创建实例。