我有一个类型的私有成员,List<T>
其中T
是丰富的域对象。我的应用程序中的域包含许多需要T
.
我只想公开IList<IT>
where类型的公共属性T : IT
。IT
占用空间小,由 DTO 实现。
由于我不能投到List<T>
我IList<IT>
正在诉诸List<T>.ConvertAll
于在财产声明中使用。
有没有更好的方法来做到这一点?更快,更优雅?
编辑以提供更多详细信息
它们是一个基类,T
存在许多派生类,并且这些派生类中的每一个都有许多不同的风格(在运行时加载的配置)。表示层中的用户可以添加/更改/删除任何配置的这些派生类的任何实例。这些实例也可以由用户定向地相互链接,但是有一些复杂的规则来管理允许的链接;有些在编译时已知,有些仅在运行时已知(基于配置)。一些实例可能是双联的,一些是交联的,一些仅在任一方向上单向,一些仅在一个方向上,而有些则根本没有。
为此,T
包含任何此类链接的有效目标列表。表示层以图形方式突出显示这些有效目标,如果目标不在有效列表中,则不允许链接。当新创建、更改或删除任何实例时,每个实例的 ValidTargets 列表需要重新评估并且可能会更改。
T
工厂和服务类期望在该类上运行许多其他成员和方法。有些行为与上面的示例非常相似。这些都不应该暴露在组件之外。