我有多个项目的解决方案:
项目A
项目B
项目C
项目之间的关系应该是:
ProjectA>参考文献>项目B
ProjectB>参考文献>项目C
ProjectC>没有参考文献
目前,在尝试实现上述关系时,我得到一个异常(现在无法提供确切的异常),ProjectA中缺少ProjectC程序集。
知道它可以在Android中使用,但在WP平台上是否可行?
编辑:
我知道将ProjectC的引用添加到ProjectA将解决异常,但这不是我的目标。
答案 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();
}
}