汇编参考层次结构和构造函数

时间:2013-09-19 05:54:16

标签: c# reference hierarchy .net-assembly

我希望有人能够对程序集引用的主题以及C#编译器如何确定何时需要引用程序集提出一些看法。

所以要设置阶段,请采用以下示例:

程序集1(包含Assembly1Cat和Assembly1Bird):

public class Assembly1Bird
{
    public Assembly1Bird()
    {

    }
    public Assembly1Bird(Assembly1Cat cat)
    {
    }

    public Assembly1Bird(Assembly2Dog dog)
    {
    }

}

public class Assembly1Cat
{
}

装配2(包含Assembly2Dog):

public class Assembly2Dog
{
}

然后是实际的可执行文件:

class Program
{
    static void Main(string[] args)
    {
        var bird = new Assembly1Bird();
    }
}

程序集引用层次结构如下: 可执行引用Assembly1,Assembly1引用Assembly2

这个例子构建得很好。 但是,如果我更改将Assembly1Bird实例化为

的程序main方法
class Program
{
    static void Main(string[] args)
    {
        var cat = new Assembly1Cat();
        var bird = new Assembly1Bird(cat);
    }
}

此示例不会构建,因为我们的可执行文件需要对Assembly2的引用...

所以我的问题是:为什么我们可以使用Assembly1Bird无参数构造函数成功构建解决方案,但是一旦我们尝试使用Assembly1Bird(cat)构造函数(回想一下cat位于Assembly1中),我们需要引用Assembly2(用于Assembly1Bird(dog)构造函数)。

我最好的猜测是,只要我们离开默认值,或者无参数构造函数并引用bird类中的任何其他构造函数,编译器就会检查所有构造函数,它们的参数和它们的引用。

对此有任何可靠的解释将非常感激!

0 个答案:

没有答案