【发布时间】:2015-07-18 23:22:05
【问题描述】:
我设法在 2 节课中完成,但我在 3 节课中失败了。 假设我有一个程序集 A.DLL,它有 namespace = "City" 和一个 class= "NY"
(我将在我的问题中将此类称为“A”)
在我的新项目中,我的命名空间是 = "City",我有一个 class= "NY"(我将在我的问题中将此类称为 "B")
所以要实现 B : A (B Inherit/Extend from A) 我为引用 A.DLL 创建了一个别名 并在“B”类中引用“extern alias oldDll”
namespace City
{
extern alias oldDll;
public class NY : oldDll::City.NY
{
public NY() : base()
{
}
}
}
这很好用! :)
问题是当我尝试在另一个程序集中使用新的程序集(B.DLL /“B”类)时只引用 B.DLL(我将在我的问题中将这个类称为“C”)并创建“City.NY”的新实例 我得到一个异常,我认为这是因为“A.DLL”没有加载。
如何从 B 加载它(如果这是问题)?我无法访问“C.EXE”或 C 代码(他只是从 B.DLL 创建 City.NY)。 *注意:我不能重新编译C。我只能运行它。
所以我有一个类“C”,它创建一个继承自“A”的类“B”
我想过在“B”代码中手动加载“A.DLL”程序集,但首先发生的是 base() 构造函数.. :\
感谢您的帮助
【问题讨论】:
-
好问题但是你提出它的方式使它比必要的更难理解。例如,1. 与其用文本描述命名空间和类,为什么不用代码描述呢? (例如:“在 A.dll 中:
namespace City { class NY { … } }”)2. 为什么不将外部别名和类引用与其实际名称对齐?如果您有A.dll,为什么要命名外部别名oldDll?为什么不A?当你可以称它为A::City.NY时,为什么将A.dll的City.NY类称为“A”?这样,您问题的读者将不得不进行更少的心理杂耍。 ;) -
@stakx 谢谢我下次会记住的:)
标签: c# class inheritance namespaces .net-assembly