0

我想知道是否有一种方法可以强制 ms vs 2010 c# 编译我制作的程序,因为我有 2 个同名的 dll 可以使用,使用程序集解析我可以互换另一个,但事情都是 dll有不同的方法,根据我给它的级别,它将执行 dll 具有的独特方法。我可以使用动态类型,但是有没有其他方法可以告诉 ms vs 2010 在出现错误时强制编译?

说dll1有方法A,dll2有方法B,编码的时候我说的是if(condition) classname.A else classname.B,但只引用了dll1,使用时classname.B出错。那么我该如何强制编译呢?还是我只是继续使用动态类型?

4

3 回答 3

1

不,您不能强制编译出现错误。某种动态方法是您唯一的方法,例如反射或dynamic关键字。

于 2013-07-08T13:12:09.423 回答
0

这种做法真的很“有味道”。首先,不,你不能忽略这样的错误。

有很多方法会更合理。仅举几例:使用dynamicclassname在 dll1 和 dll2 中都派生自同一个基类或实现相同的接口,使用类似MEF的东西。

其中一些可能对您的解决方案来说太过分了。我只是想知道您是否在问我们如何解决症状,而不是向我们寻求问题的实际根本原因的帮助。

于 2013-07-08T13:15:22.737 回答
0

这是不可能的,因为即使类在 A.dll 和 B.dll 中具有相同的名称,它仍然不是同一个类。因此,即使您以某种方式设法编译它并关闭 dll,程序仍然可能会崩溃。

正如其他人所说,使用动态或反射。

于 2013-07-08T13:22:13.897 回答