Skip to content

Commit 8c56b6e

Browse files
committed
fix2
1 parent 958e955 commit 8c56b6e

File tree

1 file changed

+98
-98
lines changed

1 file changed

+98
-98
lines changed

src/Mapster.Tests/WhenMappingMemberNameContainingPeriod.cs

Lines changed: 98 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class WhenMappingMemberNameContainingPeriod
1919
public void Property_Name_Containing_Periods_Is_Supported()
2020
{
2121
// Create a target type with a property that contains periods
22-
Type targetType = new TestTypeBuilder()
22+
Type targetType = new TestTypeBuilder("Test1")
2323
.AddProperty<int>(MemberName)
2424
.CreateType();
2525

@@ -53,12 +53,12 @@ static void Test<TTarget>()
5353
public void Constructor_Parameter_Name_Containing_Periods_Is_Supported()
5454
{
5555
// Create a target type with a property that contains periods
56-
Type targetTypeWithProperty = new TestTypeBuilder()
56+
Type targetTypeWithProperty = new TestTypeBuilder("Test2")
5757
.AddProperty<int>(MemberName)
5858
.CreateType();
5959

6060
// Create a target type with a constructor parameter that contains periods
61-
Type targetTypeWithConstructor = new TestTypeBuilder()
61+
Type targetTypeWithConstructor = new TestTypeBuilder("Test3")
6262
.AddConstructorWithReadOnlyProperty<int>(MemberName)
6363
.CreateType();
6464

@@ -103,7 +103,7 @@ static void Test<TWithProperty, TWithConstructor>()
103103
public void Using_Property_Path_String_Is_Supported()
104104
{
105105
// Create a target type with a property that contains periods
106-
Type targetType = new TestTypeBuilder()
106+
Type targetType = new TestTypeBuilder("Test4")
107107
.AddProperty<int>(MemberName)
108108
.CreateType();
109109

@@ -129,7 +129,7 @@ public void Using_Property_Path_String_Is_Supported()
129129
public void Using_Property_Path_String_Nested_Is_Supported()
130130
{
131131
// Create a target type with a property that contains periods
132-
Type targetType = new TestTypeBuilder()
132+
Type targetType = new TestTypeBuilder("Test5")
133133
.AddProperty<Nested>(MemberName)
134134
.CreateType();
135135

@@ -211,125 +211,125 @@ private class Nested
211211
private class Source
212212
{
213213
public int Value { get; set; }
214-
}
215-
216-
private class TestTypeBuilder
217-
{
218-
private readonly TypeBuilder _typeBuilder;
219-
220-
public TestTypeBuilder()
221-
{
222-
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(
223-
new AssemblyName("Types"),
224-
AssemblyBuilderAccess.Run);
225-
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("<Module>");
226-
_typeBuilder = moduleBuilder.DefineType(
227-
"Types.Target",
228-
TypeAttributes.Public |
229-
TypeAttributes.Class |
230-
TypeAttributes.Sealed |
231-
TypeAttributes.AutoClass |
232-
TypeAttributes.AnsiClass |
233-
TypeAttributes.BeforeFieldInit |
234-
TypeAttributes.AutoLayout,
235-
null);
236214
}
237215

238-
public TestTypeBuilder AddConstructorWithReadOnlyProperty<TParameter>(string parameterName)
216+
private class TestTypeBuilder
239217
{
240-
// Add read-only property
241-
FieldBuilder fieldBuilder = AddProperty<TParameter>(parameterName, false);
218+
private readonly TypeBuilder _typeBuilder;
242219

243-
// Build the constructor with the parameter for the property
244-
ConstructorBuilder constructorBuilder = _typeBuilder.DefineConstructor(
245-
MethodAttributes.Public,
246-
CallingConventions.Standard,
247-
new Type[] { typeof(TParameter) });
220+
public TestTypeBuilder(string TypeName)
221+
{
222+
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(
223+
new AssemblyName("Types"),
224+
AssemblyBuilderAccess.Run);
225+
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("<Module>");
226+
_typeBuilder = moduleBuilder.DefineType(
227+
$"Types.{TypeName}",
228+
TypeAttributes.Public |
229+
TypeAttributes.Class |
230+
TypeAttributes.Sealed |
231+
TypeAttributes.AutoClass |
232+
TypeAttributes.AnsiClass |
233+
TypeAttributes.BeforeFieldInit |
234+
TypeAttributes.AutoLayout,
235+
null);
236+
}
248237

249-
// Define the parameter name
250-
constructorBuilder.DefineParameter(1, ParameterAttributes.None, MemberName);
238+
public TestTypeBuilder AddConstructorWithReadOnlyProperty<TParameter>(string parameterName)
239+
{
240+
// Add read-only property
241+
FieldBuilder fieldBuilder = AddProperty<TParameter>(parameterName, false);
251242

252-
ILGenerator constructorIL = constructorBuilder.GetILGenerator();
243+
// Build the constructor with the parameter for the property
244+
ConstructorBuilder constructorBuilder = _typeBuilder.DefineConstructor(
245+
MethodAttributes.Public,
246+
CallingConventions.Standard,
247+
new Type[] { typeof(TParameter) });
253248

254-
// Call the base class constructor
255-
constructorIL.Emit(OpCodes.Ldarg_0);
256-
constructorIL.Emit(OpCodes.Call, typeof(object).GetConstructor(Type.EmptyTypes));
249+
// Define the parameter name
250+
constructorBuilder.DefineParameter(1, ParameterAttributes.None, MemberName);
257251

258-
// Set the property value
259-
constructorIL.Emit(OpCodes.Ldarg_0);
260-
constructorIL.Emit(OpCodes.Ldarg_1);
261-
constructorIL.Emit(OpCodes.Stfld, fieldBuilder);
252+
ILGenerator constructorIL = constructorBuilder.GetILGenerator();
262253

263-
constructorIL.Emit(OpCodes.Ret);
254+
// Call the base class constructor
255+
constructorIL.Emit(OpCodes.Ldarg_0);
256+
constructorIL.Emit(OpCodes.Call, typeof(object).GetConstructor(Type.EmptyTypes));
264257

265-
return this;
266-
}
258+
// Set the property value
259+
constructorIL.Emit(OpCodes.Ldarg_0);
260+
constructorIL.Emit(OpCodes.Ldarg_1);
261+
constructorIL.Emit(OpCodes.Stfld, fieldBuilder);
267262

268-
public TestTypeBuilder AddProperty<T>(string propertyName)
269-
{
270-
AddProperty<T>(propertyName, true);
271-
return this;
272-
}
263+
constructorIL.Emit(OpCodes.Ret);
273264

274-
private FieldBuilder AddProperty<T>(string propertyName, bool addSetter)
275-
{
276-
Type propertyType = typeof(T);
277-
FieldBuilder fieldBuilder = _typeBuilder.DefineField($"_{propertyName}", propertyType, FieldAttributes.Private);
278-
PropertyBuilder propertyBuilder = _typeBuilder.DefineProperty(propertyName, PropertyAttributes.None, propertyType, null);
265+
return this;
266+
}
279267

280-
AddGetMethod(_typeBuilder, propertyBuilder, fieldBuilder, propertyName, propertyType);
281-
if (addSetter)
268+
public TestTypeBuilder AddProperty<T>(string propertyName)
282269
{
283-
AddSetMethod(_typeBuilder, propertyBuilder, fieldBuilder, propertyName, propertyType);
270+
AddProperty<T>(propertyName, true);
271+
return this;
284272
}
285273

286-
return fieldBuilder;
287-
}
274+
private FieldBuilder AddProperty<T>(string propertyName, bool addSetter)
275+
{
276+
Type propertyType = typeof(T);
277+
FieldBuilder fieldBuilder = _typeBuilder.DefineField($"_{propertyName}", propertyType, FieldAttributes.Private);
278+
PropertyBuilder propertyBuilder = _typeBuilder.DefineProperty(propertyName, PropertyAttributes.None, propertyType, null);
288279

289-
public Type CreateType() => _typeBuilder.CreateType();
280+
AddGetMethod(_typeBuilder, propertyBuilder, fieldBuilder, propertyName, propertyType);
281+
if (addSetter)
282+
{
283+
AddSetMethod(_typeBuilder, propertyBuilder, fieldBuilder, propertyName, propertyType);
284+
}
290285

291-
private static PropertyBuilder AddGetMethod(TypeBuilder typeBuilder, PropertyBuilder propertyBuilder, FieldBuilder fieldBuilder, string propertyName, Type propertyType)
292-
{
293-
MethodBuilder getMethodBuilder = typeBuilder.DefineMethod(
294-
"get_" + propertyName,
295-
MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig,
296-
propertyType,
297-
Type.EmptyTypes);
298-
ILGenerator getMethodGenerator = getMethodBuilder.GetILGenerator();
286+
return fieldBuilder;
287+
}
299288

300-
getMethodGenerator.Emit(OpCodes.Ldarg_0);
301-
getMethodGenerator.Emit(OpCodes.Ldfld, fieldBuilder);
302-
getMethodGenerator.Emit(OpCodes.Ret);
289+
public Type CreateType() => _typeBuilder.CreateType();
303290

304-
propertyBuilder.SetGetMethod(getMethodBuilder);
291+
private static PropertyBuilder AddGetMethod(TypeBuilder typeBuilder, PropertyBuilder propertyBuilder, FieldBuilder fieldBuilder, string propertyName, Type propertyType)
292+
{
293+
MethodBuilder getMethodBuilder = typeBuilder.DefineMethod(
294+
"get_" + propertyName,
295+
MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig,
296+
propertyType,
297+
Type.EmptyTypes);
298+
ILGenerator getMethodGenerator = getMethodBuilder.GetILGenerator();
305299

306-
return propertyBuilder;
307-
}
300+
getMethodGenerator.Emit(OpCodes.Ldarg_0);
301+
getMethodGenerator.Emit(OpCodes.Ldfld, fieldBuilder);
302+
getMethodGenerator.Emit(OpCodes.Ret);
308303

309-
private static PropertyBuilder AddSetMethod(TypeBuilder typeBuilder, PropertyBuilder propertyBuilder, FieldBuilder fieldBuilder, string propertyName, Type propertyType)
310-
{
311-
MethodBuilder setMethodBuilder = typeBuilder.DefineMethod(
312-
$"set_{propertyName}",
313-
MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig,
314-
null,
315-
new Type[] { propertyType });
304+
propertyBuilder.SetGetMethod(getMethodBuilder);
305+
306+
return propertyBuilder;
307+
}
316308

317-
ILGenerator setMethodGenerator = setMethodBuilder.GetILGenerator();
318-
Label modifyProperty = setMethodGenerator.DefineLabel();
319-
Label exitSet = setMethodGenerator.DefineLabel();
309+
private static PropertyBuilder AddSetMethod(TypeBuilder typeBuilder, PropertyBuilder propertyBuilder, FieldBuilder fieldBuilder, string propertyName, Type propertyType)
310+
{
311+
MethodBuilder setMethodBuilder = typeBuilder.DefineMethod(
312+
$"set_{propertyName}",
313+
MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig,
314+
null,
315+
new Type[] { propertyType });
316+
317+
ILGenerator setMethodGenerator = setMethodBuilder.GetILGenerator();
318+
Label modifyProperty = setMethodGenerator.DefineLabel();
319+
Label exitSet = setMethodGenerator.DefineLabel();
320320

321-
setMethodGenerator.MarkLabel(modifyProperty);
322-
setMethodGenerator.Emit(OpCodes.Ldarg_0);
323-
setMethodGenerator.Emit(OpCodes.Ldarg_1);
324-
setMethodGenerator.Emit(OpCodes.Stfld, fieldBuilder);
321+
setMethodGenerator.MarkLabel(modifyProperty);
322+
setMethodGenerator.Emit(OpCodes.Ldarg_0);
323+
setMethodGenerator.Emit(OpCodes.Ldarg_1);
324+
setMethodGenerator.Emit(OpCodes.Stfld, fieldBuilder);
325325

326-
setMethodGenerator.Emit(OpCodes.Nop);
327-
setMethodGenerator.MarkLabel(exitSet);
328-
setMethodGenerator.Emit(OpCodes.Ret);
326+
setMethodGenerator.Emit(OpCodes.Nop);
327+
setMethodGenerator.MarkLabel(exitSet);
328+
setMethodGenerator.Emit(OpCodes.Ret);
329329

330-
propertyBuilder.SetSetMethod(setMethodBuilder);
330+
propertyBuilder.SetSetMethod(setMethodBuilder);
331331

332-
return propertyBuilder;
332+
return propertyBuilder;
333+
}
333334
}
334335
}
335-
}

0 commit comments

Comments
 (0)