【问题标题】:Partial classes in separate projects单独项目中的部分课程
【发布时间】:2013-11-21 11:23:49
【问题描述】:

我有一个找不到答案的问题。 我有模块项目的解决方案。每个都有相同的类类型。我的目的是使它们全部成为部分并定义部分方法。 我尝试使用相同的命名空间和相同的 Project 命名空间,但它不起作用。有人可以给我一个建议如何做到这一点吗? 非常感谢。 更新。任何解决方法(没有直接的方法)将不胜感激

【问题讨论】:

  • 您为什么首先要这样做?因为这可能是 XY 问题?
  • 不明白你的问题。尽管我试图解释:我必须使用 CodeFirst 进行模块化,并且必须有从 DbContext 继承的具有部分方法的 parial 类,这些类执行自己的模型配置(添加 DbSet 等),这将是编程接口,然后是开发人员只需添加他的模型、服务、控制器并配置他自己的关系(不知道其他模块)(当然在单独的项目中)
  • 您可能需要解释为什么需要这样做,以便于回答
  • 刚刚更新,见上文,感谢您的关注!
  • 并在其中添加部分类进行配置

标签: c# .net module partial-classes


【解决方案1】:

部分类是编译器的魔法。换句话说,无论你有分部类,编译编译器都会将所有分部类组合成一个单元。

因为这一切都是针对每个程序集单独发生的,所以这是不可能的。

我可以看到非常接近的解决方法是继承

【讨论】:

    【解决方案2】:

    很遗憾,您不能让一个部分类跨越多个项目。部分类仅在单个项目/程序集中合并。

    有关更多信息和一些可能的解决方法(例如继承和扩展方法),请参阅 this StackOverflow post

    【讨论】:

    • 也许我可以以某种方式将单独的项目编译成一个程序集?
    • 可以使用 ILMerge 等工具组合程序集,但此类工具无法组合来自不同项目的部分类。
    【解决方案3】:

    它不会开箱即用,因为这意味着同一个类将存在于两个单独的程序集(元文件)中。

    解决方法:您可以尝试在 Pre-Build 活动中将一个项目合并到另一个项目中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      相关资源
      最近更新 更多