有没有办法将多个C#文件编译到具有循环依赖的多个程序集中?

时间:2015-03-20 00:32:45

标签: c# reference .net-assembly

我得到了两个相互交叉引用的类。我想将这些文件编译成单独的dll文件。

文件1:

public class A
{
    public B bObj;

    public A () 
    {
        bObj = new B (this);
    }

    public void TestMethod()
    {

    }
}

文件2:

public class B 
{
    public B (A aObj)
    {
        aObj.TestMethod ();
        aObj.bObj.CallMyself ();
    }

    public void CallMyself()
    {

    }
}

我希望能够与他们正在处理的其他人共享项目的各个部分。他们需要能够测试它,所以他们必须编译到项目。有没有可以轻松实现自动化的神奇解决方案?解决方案应该适用于任何文件,我知道如何使用第三个程序集解决循环依赖。

正如我所提到的,我知道如何解决这样的情况。我刚刚写了一个令人讨厌的例子,以表明我想创建一个可以处理任何代码的解决方案。

2 个答案:

答案 0 :(得分:4)

  • 编译B.dll并更改class B以删除对A
  • 的依赖
  • 使用B.dll和class A编译A.DLL,具体取决于B
  • 使用完整的class B
  • 重新编译B.DLL

如果类的接口没有改变,你可能只能重新编译一个没有另一个的源。

你应该走这条路 - 不。

答案 1 :(得分:1)

简短的回答是不要这样做。在这种情况下,将通用接口放在每个人都可以看到的单独库中是很常见的,这样他们就可以编程到这些接口而不会相互影响,然后将私有东西放在依赖于第一个接口的独立程序集中。

E.g。

// myproject.interfaces.dll
interface IA 
{
    void Process(IB b);
}

interface IB
{
    void Process(IA a);
}

// myproject.A.dll - depends on myproject.interfaces.dll
class A : IA
{
    ....
}
相关问题