继承具有相同命名空间和相同 class 名称的 class
Inherit a class with same namespace and same class name
我在 2 类 中设法解决了问题,但我在 3 中失败了。
假设我有一个程序集 A.DLL,它有 namespace = "City" 和 class= "NY"
(我将在我的问题中将此 class 称为 "A")
在我的新项目中,我的命名空间是 = "City",我有一个 class = "NY"(我将在我的问题中将此 class 称为 "B")
所以要实现 B : A(B Inherit/Extend 来自 A)
我为参考 A.DLL 创建了一个 alies
并在 "B" class 中引用 "extern alias oldDll"
namespace City
{
extern alias oldDll;
public class NY : oldDll::City.NY
{
public NY() : base()
{
}
}
}
这很好用! :)
问题是当我尝试在另一个仅引用 B.DLL(我将在我的问题中将此 class 称为 "C") 并创建 "City.NY" 的新实例
我得到一个异常,我认为这是因为 "A.DLL" 没有加载。
如何从 B 加载它(如果这是问题所在)?我无法访问 "C.EXE" 或 C 代码(他只是从 B.DLL 创建 City.NY)。
*注意:我不能重新编译C。我只能运行它。
所以我有一个 class "C" 创建一个 class "B" 继承自 "A"
我想到了在 "B" 代码中手动加载 "A.DLL" 程序集,但首先发生的是 base() 构造函数.. :\
感谢您的帮助
请纠正我,因为我不是 100% 确定,但通常你必须引用两个程序集才能使其正常工作(这就是某些包具有依赖项的方式,也必须在项目中下载和引用)。
我认为如果不缺少汇编也不会编译。
首先发生的事情实际上不是基本构造函数而是类型构造函数。您可以使用以下内容指定它:
static B()
{
}
请注意,类型构造函数上不允许使用访问修饰符。但不管怎样,我想基本类型甚至在那之前就已经加载了,所以你在这里没有机会。
配置文件也无济于事。他们可以重定向现有的引用(参见 https://msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx),但我认为他们不能添加以前不存在的引用。
你不能。
简单地说 - B.dll
中的 class City.NY
继承自 A.dll
中的 City.NY
是一项重大更改,需要重新编译程序集取决于 B.dll
。
我在 2 类 中设法解决了问题,但我在 3 中失败了。 假设我有一个程序集 A.DLL,它有 namespace = "City" 和 class= "NY"
(我将在我的问题中将此 class 称为 "A")
在我的新项目中,我的命名空间是 = "City",我有一个 class = "NY"(我将在我的问题中将此 class 称为 "B")
所以要实现 B : A(B Inherit/Extend 来自 A) 我为参考 A.DLL 创建了一个 alies 并在 "B" class 中引用 "extern alias oldDll"
namespace City
{
extern alias oldDll;
public class NY : oldDll::City.NY
{
public NY() : base()
{
}
}
}
这很好用! :)
问题是当我尝试在另一个仅引用 B.DLL(我将在我的问题中将此 class 称为 "C") 并创建 "City.NY" 的新实例 我得到一个异常,我认为这是因为 "A.DLL" 没有加载。
如何从 B 加载它(如果这是问题所在)?我无法访问 "C.EXE" 或 C 代码(他只是从 B.DLL 创建 City.NY)。 *注意:我不能重新编译C。我只能运行它。
所以我有一个 class "C" 创建一个 class "B" 继承自 "A"
我想到了在 "B" 代码中手动加载 "A.DLL" 程序集,但首先发生的是 base() 构造函数.. :\
感谢您的帮助
请纠正我,因为我不是 100% 确定,但通常你必须引用两个程序集才能使其正常工作(这就是某些包具有依赖项的方式,也必须在项目中下载和引用)。
我认为如果不缺少汇编也不会编译。
首先发生的事情实际上不是基本构造函数而是类型构造函数。您可以使用以下内容指定它:
static B()
{
}
请注意,类型构造函数上不允许使用访问修饰符。但不管怎样,我想基本类型甚至在那之前就已经加载了,所以你在这里没有机会。
配置文件也无济于事。他们可以重定向现有的引用(参见 https://msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx),但我认为他们不能添加以前不存在的引用。
你不能。
简单地说 - B.dll
中的 class City.NY
继承自 A.dll
中的 City.NY
是一项重大更改,需要重新编译程序集取决于 B.dll
。