如下代码所示,IFoo
在两个不同的程序集中定义了两个接口:
/// assembly A
interface IFoo {
void DoSomething()
}
/// assembly B
interface IFoo {
void DoSomething()
void DoSomethingElse()
}
/// assembly C
class Bar : IFoo {
public virtual void DoSomething()
public virtual void DoSomethingElse()
}
假设程序集 A 和程序集 B 错误地具有相同的签名(程序集弱名称或强名称)。为类生成的 MSILBar
是否会根据构建时使用的是程序集 A 还是程序集而有所不同?
换句话说,假设我们在运行时用程序集 A 和 C 构建了一个项目,在运行时用程序集 B 替换 A 是否可以?或者我会得到像“IFoo.DoSomethingElse”这样的异常没有实现,因为在构建过程中DoSomethingElse
被认为是一种新方法,而不是在接口中实现现有方法。