@@ -46,6 +46,12 @@ public interface ISetProcessor : IProcessor
4646 /// </summary>
4747 [ DataMember ( Name = "ignore_empty_value" ) ]
4848 bool ? IgnoreEmptyValue { get ; set ; }
49+
50+ /// <summary>
51+ /// The origin field which will be copied to field, cannot set value simultaneously.
52+ /// </summary>
53+ [ DataMember ( Name = "copy_from" ) ]
54+ Field CopyFrom { get ; set ; }
4955 }
5056
5157 /// <inheritdoc cref="ISetProcessor" />
@@ -59,6 +65,9 @@ public class SetProcessor : ProcessorBase, ISetProcessor
5965 public bool ? Override { get ; set ; }
6066 /// <inheritdoc />
6167 public bool ? IgnoreEmptyValue { get ; set ; }
68+ /// <inheritdoc />
69+ public Field CopyFrom { get ; set ; }
70+
6271 protected override string Name => "set" ;
6372 }
6473
@@ -71,6 +80,7 @@ public class SetProcessorDescriptor<T> : ProcessorDescriptorBase<SetProcessorDes
7180 object ISetProcessor . Value { get ; set ; }
7281 bool ? ISetProcessor . Override { get ; set ; }
7382 bool ? ISetProcessor . IgnoreEmptyValue { get ; set ; }
83+ Field ISetProcessor . CopyFrom { get ; set ; }
7484
7585 /// <inheritdoc cref="ISetProcessor.Field"/>
7686 public SetProcessorDescriptor < T > Field ( Field field ) => Assign ( field , ( a , v ) => a . Field = v ) ;
@@ -88,5 +98,12 @@ public SetProcessorDescriptor<T> Field<TValue>(Expression<Func<T, TValue>> objec
8898 /// <inheritdoc cref="ISetProcessor.IgnoreEmptyValue"/>
8999 public SetProcessorDescriptor < T > IgnoreEmptyValue ( bool ? ignoreEmptyValue = true ) =>
90100 Assign ( ignoreEmptyValue , ( a , v ) => a . IgnoreEmptyValue = v ) ;
101+
102+ /// <inheritdoc cref="ISetProcessor.CopyFrom"/>
103+ public SetProcessorDescriptor < T > CopyFrom ( Field field ) => Assign ( field , ( a , v ) => a . CopyFrom = v ) ;
104+
105+ /// <inheritdoc cref="ISetProcessor.CopyFrom"/>
106+ public SetProcessorDescriptor < T > CopyFrom < TValue > ( Expression < Func < T , TValue > > objectPath ) =>
107+ Assign ( objectPath , ( a , v ) => a . CopyFrom = v ) ;
91108 }
92109}
0 commit comments