【问题标题】:About c# partial class accesibility关于 c# 部分类可访问性
【发布时间】:2013-06-05 12:32:06
【问题描述】:

我对 c# 中的部分类有疑问

在这张图片中,我有一个域模型。我已将 this(DomainModelLib) 引用添加到客户端应用程序和存储库应用程序。

存储库应用程序将此域模型类用作“DbSet”并从数据库获取数据。如您所见,Realtions 是在模型部分类中创建的。

我将模型引用到客户端应用程序。我想产品类的第一部分(第一个红框)可以在客户端应用程序中访问,但类的第二部分(底部红框)无法访问。

但是存储库中应该可以访问两个部分。这可能吗?

(NHibernate XML 映射与用户保持关系,我想在实体框架中以这种方式对用户保持某些东西)

【问题讨论】:

    标签: c# entity-framework ef-code-first code-first partial-classes


    【解决方案1】:

    可访问性不是由哪个源文件构成部分类来定义的。

    我认为完全按照说明执行此操作的唯一方法是使底部红框 internal 中声明的成员,并使用 [InternalsVisibleTo] 允许 EFRepository 项目访问 DomainModelLib 中的内部成员。

    您可能想要考虑替代方案...如果不确切知道您想要实现的目标,很难提出好的替代方案,但是为两个不同的“外部”库提供不同的可访问性从根本上说是棘手的。

    【讨论】:

    • 我想将对象分成两部分,因为客户端可以访问,存储库可以访问。例如,用户不需要在 Products 中查看 SizeId。
    • NHibernate XML 映射与用户保持关系,我想在实体框架中以这种方式对用户保持一些东西
    【解决方案2】:

    可以创建一个新库(比如 X)。将底部的红框移入其中。从域和 repo 中引用 X。

    【讨论】:

    • 如果我创建新库,命名空间会有所不同。那么,partials 可以在 Repo 中互相交谈吗?
    • 不完全是,您可以为不同的程序集拥有相同的命名空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多