C#具有公共基类/命名空间问题的多类库

C#具有公共基类/命名空间问题的多类库,c#,namespaces,C#,Namespaces,我是c#的新手,我想知道是否可以创建多个派生类库,每个派生类库代表一个特定的项。我将调用两个类库ClassA和ClassB。每个类将共享一个基类(命名空间BaseNS) 然后,我创建了一个引用ClassA和ClassB的c#应用程序。这产生了一个错误,因为它们都有相同的基类。没问题,我在引用中使用了“Alias”。这很有效。因此,我: 外部别名; 外部别名Class2Alias; 这就是我遇到问题的地方 我想创建一个将基类作为参数的函数。 公共void SetData(基类bc){} 无法执行

我是c#的新手,我想知道是否可以创建多个派生类库,每个派生类库代表一个特定的项。我将调用两个类库ClassA和ClassB。每个类将共享一个基类(命名空间BaseNS)

然后,我创建了一个引用ClassA和ClassB的c#应用程序。这产生了一个错误,因为它们都有相同的基类。没问题,我在引用中使用了“Alias”。这很有效。因此,我:

外部别名; 外部别名Class2Alias;

这就是我遇到问题的地方

我想创建一个将基类作为参数的函数。
公共void SetData(基类bc){} 无法执行此操作,因为别名未定义基类。因此,它必须是: public void SetData(classalias.BaseNameSpace.BaseClass bc){}

这是可行的,但现在我想做以下工作:

这很有效

Class1Alias.BaseNameSpace.BaseClass bc = (Class1Alias.BaseNameSpace.BaseClass)c1;
SetData(bc);
这并不重要

Class1Alias.BaseNameSpace.BaseClass bc = (Class1Alias.BaseNameSpace.BaseClass)c2;
SetData(bc);
我尝试将其强制转换为Class2Alias,这很有效,但是我不能调用我的SetData函数,因为它需要一个Class2Alias


有没有办法解决这个问题?

我不确定我是否正确理解了这个问题。基类是否存在于单个程序集中,还是复制并粘贴在两个程序集中?如果它被复制和粘贴,编译器将它们视为两个不同的类,那么您就无能为力了

在特定引用程序集的“属性”窗口中设置程序集引用别名。为其分配除
global
以外的内容。然后,可以使用以下内容引用该程序集中的类型:

assemblyAlias::RootNamespace.OtherNamespace.Class

你的术语有些混乱。你提到“类库”的方式让我觉得你的意思只是“类”,但我不确定。例如,“类库”不能从基类“派生”


你说你是C#的新手。还有其他你更熟悉的语言吗?如果你能用这种语言表达你想做的事情,也许有人能把它翻译成C。

想到的选项:

  • 合并两个类库
  • 将基类(以及任何其他共享接口/类)移动到第三个公共类库中,它们都可以引用该类库
  • 更改名称空间以避免基类名称冲突(如果它们实际上不是同一个类)

  • 对的我试图为两个派生类库使用共享基类定义。我得出了同样的结论,这是不可能的。谢谢。不,我是说“类库”。这两个类库都将有一个共享基类。您是说在不同的类库中有两个类要从同一基类派生吗?如果是,这确实是可能的。指出两个名称完全相同但在不同库中定义的类是两个不同的类可能会有所帮助。是的,我意识到这是我的问题。我曾希望能够强制转换到公共基类并使用它。是什么阻止您添加从“类库a”到“类库B”的引用,并让“Class2Alias.Class2Space.Class2”直接从“Class1Alias.BaseNameSpace.BaseClass”派生?或者将基类移动到一个单独的类库中,由您已有的两个类库引用?我尝试了您的上一个建议。我将基类移到了一个单独的类库中,并在派生类库中引用了它,现在它可以工作了。谢谢你的帮助。
    assemblyAlias::RootNamespace.OtherNamespace.Class