2009-11-27 59 views
1

我是新来的将我的应用程序分解为多个解决方案(换句话说,我刚刚进入真实世界),我有一种情况,我完全将逻辑从把UI变成一个单独的项目。我跌倒的地方是我的胶水代码。使用C#中引用的项目引用的类型

作为一个简单的例子。

工程车引用内藏门,无线电等

项目库引用项目汽车项目,但需要使用无线电。

我是否需要在车库项目中添加对无线电项目的引用?

回答

3

是的,您需要添加对这两个库的引用。一般来说,您需要添加一个对所有声明类型的库的引用,直接使用;通过声明这些类型的变量,从他们那里继承,使用具有类型作为参数或返回类型的方法,等等。

3

取决于是否与否,车库内,你是直接在项目中定义的引用类型无线电。如果你是,那么你需要创建一个参考。如果你正在这些无线电类型的唯一用途是在汽车大会,该车类型是在车库中使用的事实并要求你申报车库电台参考,(除提到的在下面的编辑注)。编辑(基于来自@Pavel的评论):还有一个其他场景/情况需要引用另一个程序集: 如果您使用的是从某个类型派生的引用程序集的类型(或实现了接口)在第三个程序集中定义,则还需要引用该第三个程序集。

+1

“车库中使用车型的事实并不要求您在车库中声明对广播的引用”......除非类型'Radio'用于基类列表或实现'Car'中_any_公共类型的接口列表。 – 2009-11-27 21:10:57

+1

@Pavel,我会检查这个以确保,但是如果你实际上没有使用基类列表/实现的接口类型IN Garage,则不需要引用它。如果唯一的参考是在Car中,那么这是唯一需要参考的地方。 – 2009-11-27 21:16:06

+1

@Charles,我已经检查过了,看起来你是对的 - 如果你使用'Car'中的Derived',并且'Derived'继承'Radio'中的'Base',那么你必须引用'无线电“(即使你不使用它的任何成员),否则它是有效的。我很确定有一个明确的规则可以覆盖这个规范,无论是在ECMA CLI规范还是C#规范 - 我试图找到确切的措辞。 – 2009-11-27 21:52:12

0

你可能会考虑跳跃水平是否真的是你想要做的。在许多情况下,车库要求汽车拒绝那些该死的噪音,而不是直接访问收音机更好。

这只是取决于您的系统的意义。

如果车库不需要直接触摸收音机,那么车库参考车辆和车辆参考收音机的事实并不意味着车库需要参考收音机。

但是,如果车库确实需要弄乱它,那么它将需要一个参考。

请注意,跳过层往往表明抽象或体系结构存在问题。 (虽然跳过层可能不是在这种情况下发生的事情)。