1

基本クラスと 2 つのサブクラスが必要な 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
    }
}

どうすればこれを機能させることができますか?

4

2 に答える 2

3

クラス自体がそれほどプライベートではないが、それでもベースにラップされていて、外部からアクセスできない場合、それは問題になりますか?

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 */ }
}

あなたが述べたように、これで十分ではなく、別のファイルにそれらが必要な場合は、そのように部分クラスを使用できます。

Class1.cs ファイル

public partial class MyBaseClass
{
    public void DoMyWork()
    {
        (new MySubClass1()).DoSubClass1();
        (new MySubClass2()).DoSubClass2();
    }
}

Class2.cs ファイル

public partial class MyBaseClass
{
    private class MySubClass1
    {
        public void DoSubClass1() { /* Do stuff */ }
    }
}

Class3.cs ファイル

public partial class MyBaseClass
{
    private class MySubClass2
    {
        public void DoSubClass2() { /* Do stuff */ }
    }
}   

しかし、ここで何を達成しようとしているのかはまだ明確ではありません。

于 2014-02-24T14:10:18.117 に答える
2

サブクラスを基本クラス内に配置すると、基本クラスはそれらにアクセスできます。あなたの例を使用するには、次のようになります。

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
        }
    }

}

私がしたことは、最後を一番下に移動したことだけであることに注意してください}

于 2014-02-24T13:45:41.023 に答える