【问题标题】:How to control interaction between 2 classes (A & B) from 2 different assemblies?如何控制来自 2 个不同程序集的 2 个类(A 和 B)之间的交互?
【发布时间】:2018-08-20 11:50:15
【问题描述】:

我有一个程序集 (X),它是一个名为 DataItems 的库,其中包含我的模型,以及代表业务对象的类,如订单、发票等。它们都继承自类 DataItem (A)。 A 有方法 ResetStatus (M)。

X 被其他不同的项目使用,所以我不能对此进行太多更改。

我有一个程序集,一个名为 DataContext (Y) 的库,它引用程序集 X。它处理数据库连接等并实例化 A 类的对象,用来自不同来源的数据等填充它们。它必须能够调用 A。重置状态()(M)。

基本上,我希望我的所有前端程序集都引用和使用 DataContext (Y)。但我不希望他们能够使用 M。

【问题讨论】:

  • 什么是方法M?你能添加一些你正在尝试做的伪代码吗?
  • 你没有。如果 B 本质上是 A 的私有类,为什么它们在不同的程序集中?我会将 M 移动到 A 并使其引用 B 中的数据
  • 使用访问修饰符
  • 请详细说明

标签: c# generics access-modifiers


【解决方案1】:

使用接口仅公开您选择的方法。

public interface IDataItem 
{
    void OnlyUseThis();
}

public class DataItem : IDataItem
{
    public void OnlyUseThis()
    {  
        // externaly available
    }

    public void ResetStatus()
    {
        // hands off
    }
}

不要在外部使用 DataItem,而是使用 IDataItem。

如果程序员真的愿意,他们将能够实现,但不是偶然的。

【讨论】:

  • 这有效并回答了问题,因此我将其标记为答案。感谢您和 @krimog 指出我的概念中的缺陷。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 2017-07-26
  • 1970-01-01
相关资源
最近更新 更多