clr项目dll之间的继承

Inheritance between clr project dlls

我有一个用c++/cli编写的抽象基础class。此 class 位于项目中。我还有其他项目继承了抽象基础 class。因此,结构如下所示。

基础项目:

public ref class Base abstract
{
  // implementation
  virtual CommonFunc();
};
public delegate void Foo();

派生项目 A:

public ref class A : public Base
{
  // implementation
};

派生项目 B:

public ref class B : public Base
{
  // implementation
};

等等。我可以在 C# 项目中同时调用 A 和 B classes。没问题。

但是,当我尝试使用 Base 的 Foo 委托时,出现如下错误;

Error : 'Foo' is an ambiguous reference between 'Foo' and 'Foo'

摆脱这个。我在 C# 项目中为 A 和 B 的引用定义了外部别名。所以,当我使用 like AliasA.Foo 时,没问题。但是,在两个 A 和 B dll 中存在两个 Foo。这是个问题。

最后,当我尝试开发如下代码时,编译器不知道 AliasBase.Base 是 A 的基数。

AliasBase.Base base = new A();
base.CommonFunc();
base = new B();
base.CommonFunc();

Error : Cannot implicitly convert type 'A' to 'Base'

我希望我说清楚了。总结;我有三个 dll。其中一个是base的dll,其他的是inteherited class的dll。继承的 class 的 dll 包含它们自己的基本实现。有没有办法摆脱基数的多个实现?class?

注意:是的,如果我将它们收集到一个项目中,就不会有问题。但是,我被要求为所有派生项目提供单独的 dll。

提前致谢。

正如 Hans Passant 在评论中建议的那样,我摆脱了头文件并仅使用引用,最后继承工​​作。我只需要在 C# 端为 base class 设置一个别名,它与 parant classes 有继承关系。因此,以下代码现在可以正常工作了。

AliasBase.Base base = new A();
base.CommonFunc();
base = new B();
base.CommonFunc();