问题描述
我正在编写一些适用于集合的代码,并向其中添加更多信息。它以A开头,然后添加更多信息,例如,它计算A的“到期时间”并返回该值。 然后,根据当前用户以及A和B,计算允许的权限-并将其添加为C。
我开始使用Tuples,但是到了开始学习(E)时,类型定义变得笨拙且难以理解。
-
使用元组:
IEnumerable<A> CreateA(); IEnumerable<Tuple<A,B>> AddB(IEnumerable<A>); IEnumerable<Tuple<A,B,C>> AddC(IEnumerable<A,B>); etc..
我正在考虑两个选项,创建代表元组的类型(下面的选项2),这意味着您不能在编译时未完成A和B的情况下创建C,或者使用带有运行时检查的可变对象(选项以下3)
-
用不同的类型替换小杯
class AB { ctor(A,B),A A{get;},B B{get;} } class ABC { ctor(A,C),B B{get;},C C{get;} } IEnumerable<A> CreateA(); IEnumerable<AB> AddB(IEnumerable <A>) IEnumerable<ABC> AddC(IEnumerable <AB>) etc..
-
具有可变类型(进行一些运行时检查,例如B为空然后抛出...)。
class ABC { ctor(A),B B{get;set;},C C{get;set;} } IEnumerable<ABC> CreateA(); IEnumerable<ABC> AddB(IEnumerable<ABC>); //Sets B IEnumerable<ABC> AddC(IEnumerable<ABC>); //If B is null throw,set C
选项2看起来有点陌生,创建和命名类型几乎和选项A一样笨拙。我感觉自己已经偏离了常规。
我认为更多的程序员会理解选项3。
选项2是否有采用标准命名策略的标准接受模式-还是我应该放弃并选择选项3。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)