【发布时间】:2018-07-19 15:18:21
【问题描述】:
我只知道我是个白痴,所以请有人告诉我怎么做。
设置很简单:
使用三个名为
InherTest、InherTest.Base和InherTest.Base.Inherited的项目(.Net 框架、类库)创建解决方案-
在
InherTest.Base中,添加如下类:命名空间 InherTest.Base { 公共抽象类 BaseClass { 内部抽象字符串 MEMBER_1 { get; } } }
将完全相同的代码复制到
InherTest,包括命名空间。-
在
InherTest.Base.Inherited中,添加如下类:命名空间 InherTest.Base.Inherited { 公共类继承:BaseClass { 内部覆盖字符串 MEMBER_1 { get; } } }
将
InherTest.Base.Inherited中的项目引用添加到InherTest.Base。注意错误(“抽象成员未实现”和“找不到合适的成员来覆盖”)。删除该引用并将其替换为
InherTest。观察继承也失败了。
为什么它们都不起作用?
编辑:最初我说一个测试会失败,另一个会成功;但是,在上述情况下,两种继承尝试都失败了。
【问题讨论】:
-
MEMBER_1应声明为public -
Why don't they both work?is 不同,特别是MEMBER_1可能在InherTest项目中声明为public。或者,您在项目InherTest中有一个程序集级属性[assembly:InternalsVisibleTo("InherTest.Base.Inherited")] -
@Igor 是对的。我根据您的指示创建了一个解决方案,但由于 Rahul 和 Dale 给出的原因,它们都失败了。
-
@Igor 你是对的,我已经纠正了这个问题。谢谢。
标签: c# inheritance