gpt4 book ai didi

c# - 使一个类仅对其他一个类可用

转载 作者:行者123 更新时间:2023-11-30 21:20:01 25 4
gpt4 key购买 nike

我有一个 C# 项目,我在其中使用 Memento/Command 模式来实现撤消/重做功能。该应用程序是一个 WPF 应用程序,它使用 IOC 的 StructureMap,具有广泛的单元测试,并使用 RhinoMocks 通过接口(interface)进行模拟。

在我的代码中,我有一个 Operation 类代表所有可撤销的操作,我还有一个 IRepositoryWriter 接口(interface),所有写入数据库的操作都通过该接口(interface)进行路由。

我想知道执行只有 Operation 及其派生类应该能够使用 IRepositoryWriter 的策略的最佳方法是什么。

实现此目的的明显方法是使 IRepositoryWriter 成为 Operation 的 protected 嵌套接口(interface)。

优点:只有Operation 和派生类可以访问IRepositoryWriter

缺点:不再可以与 StructureMap 或 Unit Tested 一起使用。

还有哪些其他解决方案?该策略不需要严格执行 - 只需向从事代码库工作的其他人提供提示就足够了。

最佳答案

您可以像这样将您的应用程序分成多个库:

Lib1
UI code
Lib2
Operation and derived classes
Lib3
IRepositoryWriter and implementation

只有 Lib2 应该有对 Lib3 的引用。你甚至可以使用 InternalsVisibleToAttribute确保 Lib3 的内部组件仅对 Lib2 可见,并使 IRepositoryWriter 和实现成为内部

这样你仍然可以拥有你想要的所有单元测试。当然,没有什么可以阻止其他开发人员创建从 Lib1Lib3 的引用,但这更容易执行。

关于c# - 使一个类仅对其他一个类可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3511071/

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