我想知道是否有办法迫使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
错误。那么如何强制编译呢?或者我只是继续使用动态类型?
答案 0 :(得分:1)
不,你不能强制编译错误。某种动态方法是您唯一的方法,例如反射或dynamic
关键字。
答案 1 :(得分:0)
这种方法确实是" smells。"首先,不,你不能忽视这样的错误。
有很多方法会更合理。仅举几例:使用dynamic
,dll1和dll2中的classname
派生自相同的基类或使用类似MEF的内容实现相同的接口。
其中一些可能对你的解决方案有些过分。我只是想知道你是否可能会问我们如何解决症状,而不是向我们寻求帮助解决问题的实际根本原因。
答案 2 :(得分:0)
这是不可能的,因为即使该类在A.dll和B.dll中具有相同的名称,它仍然不是同一个类。所以,即使你以某种方式设法编译它,并切换出dll,程序仍然可能会崩溃。
正如其他人所说,使用动态或反思。