gpt4 book ai didi

c# - 混合封装和依赖注入(inject)

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:41 25 4
gpt4 key购买 nike

我有一个用作数据模型的类。我会像这样简化它:

public class DataModel
{
public bool IsDataModelActive {get; internal set;}
}

因此,使用我的 DLL 的程序员将只看到他们需要的东西,而不会冒破坏任何东西的风险。

另一方面,我想在使用 DataModel 的类中使用 DI。所以我必须创建一个界面:

public interface IDataModel
{
bool IsDataModelActive {get;}
}

所以我在类里面注入(inject)了这个:

public class Class1
{
IDataModel dataModel;

public Class1(IDataModel dataModel)
{
this.dataModel = dataModel
}
}

在这种情况下,我无法访问 dataModel.IsDataModelActive 的 setter。

我发现最好的补丁是在接受注入(inject)后施放:

public class Class1
{
DataModel dataModel;

public Class1(IDataModel dataModel)
{
this.dataModel = (DataModel)dataModel
}
}

这有助于单元测试,但它打破了 DI 的整个概念。如果我有另一个实现 IDataModel 的类怎么办?

你/你会使用什么策略?

最佳答案

如果接口(interface) IDataModel 不允许您从 DataModel 外部访问 setter,那么(希望这不会令人惊讶)您不应该需要从 DataModel 外部访问 setter。 DataModel 本身或可以看到 setter 的东西应该负责设置该值。

关于c# - 混合封装和依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com