主项目A引用了用户控件B(B不能引用A),现在需要达到一个目的是通过B里面的一个事件(函数方法)更改A里面的的值,
苦思冥想了好长时间,也没想到方法。除非相互引用,方能达到目的,但是不能用相互引用。求高人给个思路,给个解决方法。这个问题应该比较普遍。在多人进行模块化松耦合开发时应该经常用到。

解决方案 »

  1.   

    用户控件动态调用父页面的方法
    Page p = this.Parent.Page;
    Type pageType = p.GetType();
    MethodInfo mi = pageType.GetMethod("");
    mi.Invoke(p, new object[] { "参数1","参数2" }); 
    http://blog.chinaunix.net/u2/70983/showart_1851903.html
      

  2.   

    这是最基本的编程,到处都需要如此:其实你已经说出来了——事件。比如说TextBox有个TextChanged之类的事件,它就是把文本修改的事情通知我们的程序,难道需要TextBox的控件程序引用我们的程序?
      

  3.   

    先开发接口,比如ipos.dll,再开发pos.dll实现接口功能。
    fo.dll引用ipos.dll,然后实现反射创建,那样就不需要直接引用pos.dll了。
    例子:
    namespace ipos
    {
    interface iClass1
    {
      void Method1();
    }
    }using iPos;
    using fo;
    namespace pos
    {
      public class Class1:iClass1
      {
      public void Method()
      {
           Class2 class2=new Class2();
           ..................
       }
      }
    }using iPos;
    namespace fo
    {
      public class Class2
      {
      public iClass1 class1;
       
      public Class2()
      {
      class1=Assembly.Load("Pos").CreateInstance("Pos.Class1");
      }
      .................
      }
    }
    先学习依赖注入,反射创建的原则你就能立即明白。
    但此用法一般用于Factory、Repository等底层开发,并非随处适用,滥用会导致增大系统负荷,阁下可以按需要酌情处理。QQ群:59557329 .NET技术开发联盟
    希望大家可以踊跃参加,积极讨论