Windows Phone 7.1项目参考

时间:2014-10-30 17:56:49

标签: windows-phone-7 windows-phone dependencies project solution

我有多个项目的解决方案:
项目A
项目B
项目C

项目之间的关系应该是:
ProjectA>参考文献>项目B
ProjectB>参考文献>项目C
ProjectC>没有参考文献

目前,在尝试实现上述关系时,我得到一个异常(现在无法提供确切的异常),ProjectA中缺少ProjectC程序集。

知道它可以在Android中使用,但在WP平台上是否可行?

编辑:
我知道将ProjectC的引用添加到ProjectA将解决异常,但这不是我的目标。

1 个答案:

答案 0 :(得分:0)

您描述的设置是可能的,但仅当ProjectA未在其源中引用ProjectC中的任何类型时。如果ProjectA从ProjectC引用任何类型(甚至是间接的),那么您将不得不添加引用。没有办法解决这个问题,因为编译器要构建ProjectA,它必须能够解析其源代码中的所有类型。

例如,我们说我们有以下项目:

项目C:

public class C
{
    public void CTest() { Console.WriteLine("C"); }
}

项目B:

public class B
{
    public C GetC() { return new C(); }
}

项目A:

public class A
{
    static void Main(string[] args)
    {
        var b = new B();
        // b.GetC();
    }
}

以上将编译,但如果您尝试取消注释Main中的最后一行,您将收到编译器错误:

  

ProjectC.C类型在未引用的程序集中定义。您必须添加对程序集&ProjectC的引用,...'


一种可能的方法是使用动态类型。动态类型导致类型解析延迟到运行时,这意味着以下修改将编译并成功运行。 (我不推荐这种方法 - 因为你失去了编译时的安全性和智能感知支持 - 除非有一个非常有说服力的理由。)

项目C:

public class C
{
    public void CTest() { Console.WriteLine("C"); }
}

项目B:

public class B
{
    public dynamic GetC() { return new C(); }
}

项目A:

public class A
{
    static void Main(string[] args)
    {
        var b = new B();
        b.GetC().CTest();

        Console.ReadLine();
    }
}