如何控制来自 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。
如果程序员真的愿意,他们将能够实现,但不是偶然的。
我有一个程序集 (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。
如果程序员真的愿意,他们将能够实现,但不是偶然的。