C# 如何以最佳方式设计这些类?

C# 如何以最佳方式设计这些类?,c#,oop,inner-classes,C#,Oop,Inner Classes,我有一个问题,如何在一个好的(更好的)模型中设计以下案例(我使用的是C#): 到目前为止,情况是这样的: public class ExampleClass { private object ExampleClassPrivate; public SubExampleClass SubExampleClassPublic; ------- public void ChangeExampleClassPrivate() { Exam

我有一个问题,如何在一个好的(更好的)模型中设计以下案例(我使用的是C#): 到目前为止,情况是这样的:

 public class ExampleClass
 {

    private object ExampleClassPrivate;
    public SubExampleClass SubExampleClassPublic;

    -------

    public void ChangeExampleClassPrivate()
    {
        ExampleClassPrivate = "SOMETHING";
    }

    private class SubExampleClass
    {
        private object SubExampleClassPrivate;
        public SubSubExampleClass SubSubExampleClassPublic;
        .
        .
        .
    }

    public class SubSubExampleClass
    {
         ...

         public void DoSomething()
         {
         //Do something within SubSubExampleClass
         //In the end: call ChangeExampleClassPrivate()
         }
    }
 }
private class SubExampleClass
{
     private object SubExampleClassPrivate;
     private readonly SubSubExampleClass SubSubExampleClassPublic;

     private readonly ExampleClass parent;

     public SubExampleClass(ExampleClass parent)
     {
         // save reference to the parent object
         this.parent = parent; 

         // pass it to subclass
         SubSubExampleClassPublic= new SubSubExampleClass(parent)
     }

    .
    .
    .
}

public class SubSubExampleClass
{
     private readonly ExampleClass parent;

     public SubSubExampleClass(ExampleClass parent)
     {
         this.parent = parent; // save reference to the parent object
     }

     public void DoSomething()
     {
         //Do something within SubSubExampleClass
         parent.ChangeExampleClassPrivate;
     }
}
我可以做到以下几点: 我创建了ExampleClass的一个实例,我们称之为“TestInstance”。 然后:

但是我不想在DoSomething()之后一直手动执行ChangeExampleClassPrivate()。我寻找从DoSomething()内部调用ChangeExampleClassPrivate()的可能性


我怎样才能做到这一点?我想我的类结构并不完美,但我不知道如何才能改变它以正确的方式工作。

您可以将对prent类的引用传递给所有子类,如下所示:

 public class ExampleClass
 {

    private object ExampleClassPrivate;
    public SubExampleClass SubExampleClassPublic;

    -------

    public void ChangeExampleClassPrivate()
    {
        ExampleClassPrivate = "SOMETHING";
    }

    private class SubExampleClass
    {
        private object SubExampleClassPrivate;
        public SubSubExampleClass SubSubExampleClassPublic;
        .
        .
        .
    }

    public class SubSubExampleClass
    {
         ...

         public void DoSomething()
         {
         //Do something within SubSubExampleClass
         //In the end: call ChangeExampleClassPrivate()
         }
    }
 }
private class SubExampleClass
{
     private object SubExampleClassPrivate;
     private readonly SubSubExampleClass SubSubExampleClassPublic;

     private readonly ExampleClass parent;

     public SubExampleClass(ExampleClass parent)
     {
         // save reference to the parent object
         this.parent = parent; 

         // pass it to subclass
         SubSubExampleClassPublic= new SubSubExampleClass(parent)
     }

    .
    .
    .
}

public class SubSubExampleClass
{
     private readonly ExampleClass parent;

     public SubSubExampleClass(ExampleClass parent)
     {
         this.parent = parent; // save reference to the parent object
     }

     public void DoSomething()
     {
         //Do something within SubSubExampleClass
         parent.ChangeExampleClassPrivate;
     }
}
还有一个用法,在ExampleClass中的某个地方:

var instance = new SubExampleClass(this);
instance.SubSubExampleClassPublic.DoSomething();

不清楚外部类和嵌套类之间的关系是什么-您的示例根本没有显示任何关系,所以显然不可能调用外部类的实例方法(与任何其他两个不相关的类相同)。也许您希望实例之间存在某种父/子关系?也许继承?你应该考虑为这个例子用真实的名字写你的类。老实说,很难确定你的问题是关于什么的。我想你是想问如何让内部类调用其父类上的成员,在这种情况下@Tony已经回答了你的问题(注入父类,或者至少是一个指向所需函数的指针)。你能举一个小例子说明“注入指向所需函数的指针”的意思吗?