繁体   English   中英

继承具有相同名称空间和相同类名的类

[英]Inherit a class with same namespace and same class name

我设法在2个类中完成它,但是我在3中失败了。假设我有一个程序集A.DLL,它有namespace =“City”和class =“NY”

(我将在我的问题中将此课程称为“A”)

在我的新项目中我的命名空间=“城市”,我有一个class =“NY”(我将在我的问题中将此类称为“B”)

所以要实现B:A(B继承/扩展自A)我创建了一个参考文献A.DLL和“B”类参考“extern alias oldDll”

namespace City
{
    extern alias oldDll;

    public class NY : oldDll::City.NY
    {
        public NY() : base()
        {
        }
    }
}

这很好用! :)

问题是当我尝试在另一个程序集中使用新的assebmly(B.DLL /“B”类)而只引用B.DLL时(我将在我的问题中将此类称为“C”)并创建一个“City.NY”的新内容我得到一个例外,我认为这是因为“A.DLL”没有加载。

如何从B加载它(如果这是问题)? 我没有访问“C.EXE”或C代码(他只是从B.DLL创建City.NY)。 *注意:我不能重新编译C.我只能运行它。

所以我有一个类“C”,它创建一个继承自“A”的类“B”

我想到manualy在“B”代码中加载“A.DLL”程序集,但首先发生的是base()构造函数..:\\

谢谢你的帮助

纠正我的任何人,因为我不是100%肯定,但通常你必须引用两个程序集才能使它工作(这是一些包有依赖关系的方式,也必须在项目中下载和引用)。

我认为它不会编译也不会丢失程序集。

发生的第一件事实际上不是基本构造函数,而是类型构造函数。 您可以使用以下内容指定:

static B()
{
}

请注意,类型构造函数不允许访问修饰符。 但无论哪种方式,我想基础类型甚至在此之前就被加载了,所以你在这里没有机会。

配置文件也无济于事。 他们可以重定向现有的引用(参见https://msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx ),但我不认为他们可以添加不存在的引用之前。

你不能。

简单地说 - 让City.NY中的B.dll继承自City.NY中的A.dll是一个重大改变,需要重新编译依赖于B.dll的程序集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM