开发者

Calling method from child class

In Silverlight / C#, I have class Main, which creates an instance of Child, Child _child = new Child(...)

Now, in Child class I need to call a method from Main class. What开发者_开发知识库 should be the best way to do this ? Events?


Simplest solution will be to provide a reference to Main to an instance of Child class:

public class Child
{
    private Main main;

    public Child(Main main)
    {
        this.main = main;

        main.Bar();
    }
}

public class Main
{
    public void Foo()
    {
        Child c = new Child(this);
    }

    public void Bar()
    {
    }
}

This can be further improved by abstracting away Main class behind a IMain interface in order to minimize coupling.

But best solution will be to utilize event bubbling


The answer depends upon what the semantics of the call are; your example is vague and has no obvious semantics to reason from, so it is impossible to give a good answer.

Is Main providing a service to Child? For example, is the call that Child wants to do on Main something like "get me the list of users who are authorized to do blah", or "add up all the accounts receivable for November"?

Or is Main reacting to an event assocaited with Child? For example, perhaps Child is a button and Main is a form, and Main wishes to react when the button is clicked.

In the former case, Main should provide an object -- possibly itself -- to Child that implements the desired service. The object might be Main itself, or a delegate to a method, or an interface, but it's something that Child can invoke when the service is needed.

In the latter case, Main should listen to the event raised by Child.

Which is correct depends on the meaning of the objects; can you describe the meaning more clearly?


Eventing is the proper pattern. See this answer on the conceptual reasons around information flow in an object/class hierarchy.

deeper components simply "release" their information - usually via an event - and it "floats" up the chain without directly invoking

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜