@@ -111,8 +111,78 @@ public void MappingToIntefaceWithIgnorePrivateSetProperty()
111111
112112 }
113113
114+ /// <summary>
115+ /// https://github.com/MapsterMapper/Mapster/issues/953
116+ /// </summary>
117+ [ TestMethod ]
118+ public void RemoveIgnoredFeatureIsWorked ( )
119+ {
120+ TypeAdapterConfig < BaseDTO953 , BasePoco953 >
121+ . NewConfig ( )
122+ . Map ( dest => dest . PocoName , src => src . DtoName )
123+ . Ignore ( x=> x . PocoName ) ;
124+
125+ TypeAdapterConfig < DerivedDTO953 , DerivedPoco953 >
126+ . NewConfig ( )
127+ . Inherits < BaseDTO953 , BasePoco953 > ( ) ;
128+
129+ var srcDerived = new DerivedPoco953 { PocoName = "Alice" } ;
130+
131+ // standart cases
132+ var resultDerived = srcDerived . Adapt < DerivedPoco953 > ( ) ;
133+
134+ // when igrored member is remove
135+
136+ var resultDerivedRemoveAllIgnored = srcDerived
137+ . Adapt < DerivedPoco953 > ( cfg =>
138+ {
139+ cfg
140+ . NewConfig < DerivedDTO953 , DerivedPoco953 > ( )
141+ . Inherits < BaseDTO953 , BasePoco953 > ( )
142+ . IgnoredClear ( ) ;
143+ } ) ;
144+
145+ var resultDerivedRemove = srcDerived
146+ . Adapt < DerivedPoco953 > ( cfg =>
147+ {
148+ cfg
149+ . NewConfig < DerivedDTO953 , DerivedPoco953 > ( )
150+ . Inherits < BaseDTO953 , BasePoco953 > ( )
151+ . IgnoredRemove ( x=> x . PocoName ) ;
152+ } ) ;
153+
154+ var resultDerivedRemoveByName = srcDerived
155+ . Adapt < DerivedPoco953 > ( cfg =>
156+ {
157+ cfg
158+ . NewConfig < DerivedDTO953 , DerivedPoco953 > ( )
159+ . Inherits < BaseDTO953 , BasePoco953 > ( )
160+ . IgnoredRemove ( "PocoName" ) ;
161+ } ) ;
162+
163+
164+ resultDerived . PocoName . ShouldNotBeNullOrEmpty ( ) ;
165+ resultDerivedRemoveAllIgnored . PocoName . ShouldBe ( "Alice" ) ;
166+ resultDerivedRemove . PocoName . ShouldBe ( "Alice" ) ;
167+ resultDerivedRemoveByName . PocoName . ShouldBe ( "Alice" ) ;
168+
169+ }
170+
114171 #region TestClasses
115172
173+ public class BaseDTO953
174+ {
175+ public string DtoName { get ; set ; }
176+ }
177+ public class DerivedDTO953 : BaseDTO953 { }
178+
179+ public class BasePoco953
180+ {
181+ public string PocoName { get ; set ; }
182+ }
183+
184+ public class DerivedPoco953 : BasePoco953 { }
185+
116186 public interface InterfaceDestination723
117187 {
118188 public string Inter { get ; set ; }
0 commit comments