我有一个正在使用的 dll,它包含一个类 foo.Launch。我想创建另一个子类 Launch 的 dll。问题是类名必须相同。这被用作另一个软件的插件,而 foo.Launch 类就是启动插件的样子。

我试过了:

namespace foo
{
    public class Launch : global::foo.Launch
    {
    }
}


using otherfoo = foo;
namespace foo
{
    public class Launch : otherfoo.Launch
    {
    }
}

我还尝试在引用属性中指定别名并在我的代码中使用该别名而不是全局别名,这也不起作用。

这些方法都不起作用。有没有办法可以指定要在 using 语句中查看的 dll 的名称?

最佳答案

您需要为原始程序集添加别名并使用 extern alias 来引用新程序集内的原始程序集。下面是一个使用别名的例子。

extern alias LauncherOriginal;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace foo
{
    public class Launcher : LauncherOriginal.foo.Launcher
    {
        ...
    }
}

这是一个 walkthrough 解释了如何实现它。

此外,您提到您之前尝试使用别名并遇到问题,但您没有说明它们是什么,所以如果这不起作用,那么请提及出了什么问题。

关于C# 子类同时保持名称。深巫毒?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10852704/

10-13 08:20