【发布时间】:2020-11-21 18:11:06
【问题描述】:
有没有办法将接口实现对象从一个命名空间转换为另一个,因为两者都具有相同的接口,但只有命名空间不同?
用例如下所示
namespace namespaceA
{
Public Interface IInterface
{
Method1();
Method2();
}
}
namespace namespaceB
{
Public Interface IInterface
{
Method1();
Method2();
}
}
我们得到两种对象。
namespaceA.IInterface 对象 - 新实现
namespaceB.IInterface 对象。 - 作为遗留实现的一部分存在。
我们希望在代码中只处理一个对象,即 namespaceA.IInterface 对象,基于新的实现。 但是由于遗留实现,我们也得到了 namespaceB.IInterface 对象。 但我们不想对遗留对象进行任何特定处理,我们希望以与新对象和实现相同的方式处理。
如果我们得到一个 namespaceB.IInterface 对象,如果接口定义相同但只存在于不同的命名空间中,是否有办法将其转换/转换为 namespaceA.IInterface 对象?
因此代码不必只担心遗留对象的处理。
【问题讨论】:
-
从编译器的角度来看,这是两个不相关的接口,因为它们位于不同的命名空间中。不确定是否可以自动“转换/转换”一个到另一个。
-
命名空间似乎是一种解决向后兼容性问题的尝试。确认?
-
你不能从 A 继承接口 B 吗?所以每个遗留对象已经是新接口的一个实例。
标签: c# design-patterns architecture