C# 向不可变类型添加信息的公认模式是什么?
我正在编写一些代码,这些代码可以在集合上工作,并向集合中添加更多信息。它以A开头,然后添加一些更多的信息,比如它计算A的“到期日”,并返回该值。 然后,我根据当前用户计算允许的权限,以及A和B,-并添加这个,称之为C 我开始使用元组,但到了(E)时,类型定义很难理解C# 向不可变类型添加信息的公认模式是什么?,c#,tuples,immutability,C#,Tuples,Immutability,我正在编写一些代码,这些代码可以在集合上工作,并向集合中添加更多信息。它以A开头,然后添加一些更多的信息,比如它计算A的“到期日”,并返回该值。 然后,我根据当前用户计算允许的权限,以及A和B,-并添加这个,称之为C 我开始使用元组,但到了(E)时,类型定义很难理解 使用元组: IEnumerable<A> CreateA(); IEnumerable<Tuple<A,B>> AddB(IEnumerable<A>); IEnume
IEnumerable<A> CreateA();
IEnumerable<Tuple<A,B>> AddB(IEnumerable<A>);
IEnumerable<Tuple<A,B,C>> AddC(IEnumerable<A,B>);
etc..
IEnumerable CreateA();
IEnumerable AddB(IEnumerable);
IEnumerable AddC(IEnumerable);
等
class AB { ctor(A, B), A A{get;}, B B{get;} }
class ABC { ctor(A, B, C), A A{get;}, B B{get;}, C C{get;} }
IEnumerable<A> CreateA();
IEnumerable<AB> AddB(IEnumerable <A>)
IEnumerable<ABC> AddC(IEnumerable <AB>)
etc..
类AB{ctor(A,B),A A{get;},B{get;}
类ABC{ctor(A,B,C),A{get;},B{get;},C{get;}
IEnumerable CreateA();
IEnumerable地址(IEnumerable)
IEnumerable AddC(IEnumerable)
等
类ABC{ctor(A),A{get;},B{get;set;},C{get;set;}
IEnumerable CreateA();
IEnumerable AddB(IEnumerable)//B组
IEnumerable AddC(IEnumerable)//如果B为空抛出,则设置C
我认为更多的程序员会理解选项3
选项2是否有一个标准化的命名策略,或者我是否应该放弃它,选择选项3。您打算做多少不同的信息?如果不是很多,那么选项2与fluent builder模式相结合就更好了。有6条信息,我将试用builder,看看它的外观。
class ABC { ctor(A), A A{get;}, 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