我有几个名称空间,表示不同的制造商DMM的Racal_xxxxx Agilent_Xxxxx Fluke_xxxxx。
据我所知,我可以编写一个接口,强制执行以上所有功能。
我可以在Test_Station中用这种方式做我想做的事情:
public Racal_4152A_DMM.main dmm = new Racal_4152A_DMM.main();
我可以在下一节课上使用它,Test_Exec
有没有办法在不公开的情况下向上传递dmm?
而且,我真的需要让它不公开吗。
层次结构是:
Test_Exec (需要使用Racal_4152A_DMM作为数字万用表,但需要在Test_Station中进行分配)
Test_Station
Racal_4152A_DMM
所有这些都是独立的名称空间。
发布于 2017-12-19 05:11:27
名称空间实际上只是一个命名问题。他们不会对访问权限施加限制。因此,如果您想隐藏类,则必须将它们包装在另一个类中并使其成为私有类,或者将它们放置在不同的项目中并使其成为内部类。
我将向您展示如何将它们包装在一个类中。定义接口
public interface IMultimeter
{
//TODO: declare members
}
public static class MulimeterFactory
{
private class Racal_4152A : IMultimeter
{
//TODO: Implement interface
}
private class Agilent_XXX : IMultimeter
{
//TODO: Implement interface
}
public static IMultimeter Create_Racal_4152A()
{
return new Racal_4152A();
}
public static IMultimeter Create_Agilent_XXX()
{
return new Agilent_XXX();
}
}
现在您可以创建如下所示的DMM
IMultimeter dmm = MulimeterFactory.Create_Racal_4152A();
在MulimeterFactory
之外,类Racal_4152A
仍然不可见。
https://stackoverflow.com/questions/47876291
复制相似问题