winform 里面有两个DLL相互引用时出现将此项目作为引用将导致循环依赖项
    A.DLL已经引用了B.dll,
如果b.dll再引用A.DLL就会出现“将此项目作为引用将导致循环依赖项”,
但我B.DLL要读取A。DLL里面的一个窗体的控件属性,怎么办?如果B。DLL不引用A。DLL就读取不到所对应控件的属性

解决方案 »

  1.   

    因为A。DLL里面有一个MDI的主窗口,所以要对其它的DLL要全部进行引用,放到一个工程去还是行不通
      

  2.   

    如果很着急,可以用A做一个副本C,让B引用C。
      

  3.   

    楼上的不行,因为我是一个解决方案里面的几DLL,因A。dll窗口包含了一个mdi主窗体,
    所以在菜单打开其它窗体的时候必须要引用其它的几个DLL,
    但其它的DLL想得到A。DLL中MDI主窗体某个控件的属性[MDI主窗体的控件是动态增加的,就是打开一个窗体,增加一个TABPAGE,让其它窗体在TABPAGE里面],现在要去某个DLL窗口下去得到主窗体的TABPAGE属性就不行了 Order.Order order = new Order.Order();
     if (OpenOnce(order) == true)
        ShowWindow(order); bool OpenOnce(Form frm)
            {     
                if (tabControl1.TabPages.IndexOfKey(frm.ToString()) == -1)
                {                tabControl1.TabPages.Add(frm.Name,frm.Text);
                    tabControl1.SelectedIndex = tabControl1.TabCount - 1;
                    frm.TopLevel = false;
                    frm.Parent = tabControl1.TabPages[tabControl1.TabCount - 1];
                    frm.Dock = System.Windows.Forms.DockStyle.Fill;
                   return true;
                }
                else
                {
                    
                    tabControl1.SelectedIndex = tabControl1.TabPages.IndexOfKey(frm.ToString());
                    return false;
                }
            }
            private void ShowWindow(Form tt)
            {
                tt.Show();
            }
      

  4.   

    类库B可以更改么?
    如果可以,试着在类库B中用两个命名空间,
    这样, 就可以在B.1命名空间中引用类库A,在类库A中引用B.2命名空间.