![]() |
1
2
ef等正在解决的问题是不同的,并且与延迟加载等技巧有关。我只是不确定动态子类化所需的复杂程度对于这种情况是否值得。不过,有一些想法:
很遗憾,C不支持“mixin”,这也是通过接口实现这类事情的一种好方法。 |
![]() |
2
1
|
![]() |
3
1
如果您只需要一些附加属性,为什么不在基类中创建一个上下文属性呢? 类似这样,其中ContextBag是通用集合类或特殊定义的上下文集合:
设置/访问上下文时,您将使用如下语法:
|
![]() |
4
0
找到了比临时扩展更好的解决方案。我创建了一个实际的上下文对象,其中包含我需要的可用状态。每当上下文存在时,我初始化上下文并设置一个静态属性,该属性可用于从任何位置检索上下文对象,从而减少了更新较大进程的所有依赖项以将上下文作为参数的需要(这并不总是可能的,因为有时调用是在其他上下文中进行的)。
我喜欢这种工作方式。上下文是行为执行的状态。在我看来,必须将上下文数据与其他对象一起传递总是很笨拙,并且有几十个方法或方法重载可以接收和传递各种形式的上下文数据。通过设置一个在该上下文期间全局可用的上下文对象,我的代码更干净,依赖关系也更简洁。它也应该是可模拟的,因为当前属性是读/写的,所以只要需要一个模拟上下文,我就可以在BDD规范或TDD单元测试中创建一个模拟上下文,而不会有太多麻烦。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
pseudodev · 失败的测试仅显示堆栈跟踪,不显示完整日志 5 月前 |
![]() |
CactusCake · if语句中应有分号 6 月前 |
![]() |
Bin4ry · 子文件夹中的应用程序设置 6 月前 |