我有以下继承结构:
interface A
{
void Foo();
}
interface B : A
{
}
我意识到Foo()
实际实现的唯一地方(即非空)是在实现B的类中。
如果我将Foo
从A移动到B,我是否必须重新编译所有那些实现类,更重要的是,使用这些实现的所有程序集呢? / p>
(我知道我可以自己尝试一下,看看,但我也想对正在发生的事情有所了解)
答案 0 :(得分:1)
对于解决方案中的任何文件/类:是的。如果类A
实际上在.dll库中,那么也是,并且您将不得不重新编译库并更新您的引用。不过,我不明白为什么这是一个大问题。 C#编译速度非常快,并且对编译非常聪明。 (顺便说一句,每次运行你的程序时,它是不是都会构建?)
答案 1 :(得分:1)
接口定义将以非向后兼容的方式更改,因此您还必须重新编译其他程序集,如果某些代码在Foo
对象上调用A
,则必须重写那部分代码。
答案 2 :(得分:0)
这只是一个版本控制问题。当前界面“已过时”,然后新的“改进”界面应该替换它。
这个过程取决于它的使用方式。