如何控制来自 2 个不同程序集的 2 类 (A & B) 之间的交互?

How to control interaction between 2 classes (A & B) from 2 different assemblies?

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

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

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

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

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

public interface IDataItem 
{
    void OnlyUseThis();
}

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

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

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

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