我设法在2个课程中练习,但是我在3个课程中失败了。 让我们说我有一个程序集A.DLL,它有命名空间=" City"和一个班级=" NY"
(我将在我的问题中将此课程称为" A")
在我的新项目中,我的命名空间是=" City"我有一个班级=" NY" (我将在我的问题中将此课程称为" B")
所以实现B:A(B继承/扩展自A) 我为参考A.DLL创建了一个alies 并且在" B" class refere with" extern alias oldDll"
namespace City
{
extern alias oldDll;
public class NY : oldDll::City.NY
{
public NY() : base()
{
}
}
}
这很好用! :)
问题是当我尝试在另一个程序集中使用新的assebmly(B.DLL /" B"类)而只引用B.DLL时(我会在我的问题中引用这个类) as" C")并创建一个新的" City.NY" 我得到一个例外,我认为这是因为" A.DLL"没有加载。
如何从B加载它(如果这是问题)?我无法访问" C.EXE"或C代码(他只是从B.DLL创建City.NY)。 *注意:我无法重新编译C.我只能运行它。
所以我有一个班级" C"创造了一个班级" B"它继承自" A"
我想到了manualy load" A.DLL"装配在" B"代码,但首先发生的是base()构造函数..:\
感谢您的帮助
答案 0 :(得分:1)
纠正我的任何人,因为我不是100%确定,但通常你必须引用两个程序集才能使它工作(这是一些包有依赖关系的方式,也必须在项目中下载和引用)。
我认为不会在没有丢失程序集的情况下进行编译。
答案 1 :(得分:1)
首先发生的事情实际上不是基础构造函数,而是类型构造函数。您可以使用以下内容指定:
static B()
{
}
请注意,类型构造函数不允许使用访问修饰符。但无论哪种方式,我想基础类型甚至在此之前就被加载了,所以你在这里没有机会。
配置文件也不会有帮助。他们可以重定向现有的引用(请参阅https://msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx),但我不认为他们可以添加以前不存在的引用。
答案 2 :(得分:1)
你不能。
简单地说 - 让B.dll
中的City.NY
级继承自A.dll
中的B.dll
是一个重大改变,需要重新编译依赖$solvation = "<html>".$_POST['solvation'];
的程序集}。