我有一个C#项目,我需要有一个基类和两个子类,我希望子类对基类是私有的。这是它的样子:
public class MyBaseClass
{
public void doMyWork()
{
doSubClass1();
doSubClass2();
}
}
private class MySubClass1
{
public void doSubClass1()
{
//Do stuff
}
}
private class MySubClass2
{
public void doSubClass2()
{
//Do stuff
}
}
我怎样才能让它工作?
如果类本身不是那么私密的,但仍然被包裹在你的基础中并且无法在外面访问,这会有什么伤害吗?
public class MyBaseClass
{
private readonly MySubClass1 _sub1 = new MySubClass1();
private readonly MySubClass2 _sub2 = new MySubClass2();
public void DoMyWork()
{
_sub1.DoSubClass1();
_sub2.DoSubClass2();
}
}
public class MySubClass1
{
public void DoSubClass1() { /* Do stuff */ }
}
public class MySubClass2
{
public void DoSubClass2() { /* Do stuff */ }
}
如果这还不够好,并且您需要将它们放在单独的文件中,如您所说,那么您可以使用分部类,如下所示。
类 1.cs 文件
public partial class MyBaseClass
{
public void DoMyWork()
{
(new MySubClass1()).DoSubClass1();
(new MySubClass2()).DoSubClass2();
}
}
类2.cs文件
public partial class MyBaseClass
{
private class MySubClass1
{
public void DoSubClass1() { /* Do stuff */ }
}
}
类 3.cs 文件
public partial class MyBaseClass
{
private class MySubClass2
{
public void DoSubClass2() { /* Do stuff */ }
}
}
但是仍然不太清楚你在这里要实现什么。
如果将子类放在基类中,则基类可以访问它们。使用您的示例,它将如下所示:
public class MyBaseClass
{
public void doMyWork()
{
new MySubClass1().doSubClass1();
new MySubClass2().doSubClass2();
}
private class MySubClass1
{
public void doSubClass1()
{
//Do stuff
}
}
private class MySubClass2
{
public void doSubClass2()
{
//Do stuff
}
}
}
请注意,我所做的只是将最后一个}
移到底部。