代码之家  ›  专栏  ›  技术社区  ›  Daniel

简单继承在项目之间不起作用

  •  1
  • Daniel  · 技术社区  · 8 年前

    我只是知道我是个白痴,所以请告诉我怎么做。

    设置很简单:

    1. 使用三个名为的项目(.NET Framework,类库)创建解决方案 InherTest , InherTest.Base InherTest.Base.Inherited

    2. 固有试验基础 ,添加以下类:

      命名空间内部测试基 { 公共抽象类基类 { 内部抽象字符串成员_get; } }

    3. 将完全相同的代码复制到 固有的 ,包括命名空间。

    4. inhertest.base.继承 ,添加以下类:

      命名空间inhertest.base.inherited { 继承的公共类:基类 { 内部重写字符串成员_get; } }

    5. 在中添加项目引用 inhertest.base.继承 固有试验基础 . 请注意错误(“未实现抽象成员”和“未找到要重写的合适成员”)。

    6. 删除该引用并将其替换为 固有的 . 注意遗产 同样失败 .

    他们为什么不一起工作?

    编辑:最初我说过一个测试会失败,另一个会成功;但是,在上面的场景中,两个继承尝试都失败了。

    3 回复  |  直到 8 年前
        1
  •  5
  •   Dale    8 年前

    这是因为字符串是 internal 只限于它自己的项目

        2
  •  1
  •   Igor    8 年前

    他们为什么不一起工作?

    如果它们包含的代码与您所声明的代码相同,那么它们都应该失败。如果不是这样,那么代码 两个项目不同,特别是 MEMBER_1 可能声明为 public 在里面 InherTest 项目。

    唯一的方法就是 固有的 如果您具有此程序集级别属性,将使用您发布的相同代码 InternalsVisibleToAttribute 在项目中 固有的

    [assembly:InternalsVisibleTo("InherTest.Base.Inherited")]
    
        3
  •  -2
  •   Murat Tüfekçi    8 年前

    继承的命名空间位于不同的项目中。(名称空间似乎在一起,但它们不在同一程序集中)。你可以读那篇文章。

    https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/internal