|
var type = typeof(Teste); |
|
|
|
var assemblyName = new AssemblyName("TesteNamespace"); |
|
var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); |
|
var moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name); |
|
var typeBuilder = moduleBuilder.DefineType("TesteNamespace." + type.Name + "Proxy", TypeAttributes.Public, type); |
|
|
|
var jsonIgnoreType = typeof(JsonIgnoreAttribute); |
|
var constructorInfo = jsonIgnoreType.GetConstructor(Type.EmptyTypes); |
|
var attributeBuilder = new CustomAttributeBuilder(constructorInfo, Type.EmptyTypes); |
|
var propertyBuilder = typeBuilder.DefineProperty("Nascimento", PropertyAttributes.None, typeof(DateTime), Type.EmptyTypes); |
|
propertyBuilder.SetCustomAttribute(attributeBuilder); |
|
const MethodAttributes METHOD_ATTRIBUTES = MethodAttributes.Virtual | MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig; |
|
var pGet = typeBuilder.DefineMethod("get_Nascimento", METHOD_ATTRIBUTES, typeof(DateTime), Type.EmptyTypes); |
|
var pILGet = pGet.GetILGenerator(); |
|
//You must write get method code, this is just a demonstration how to do it |
|
pILGet.Emit(OpCodes.Ret); |
|
|
|
var pSet = typeBuilder.DefineMethod("set_Nascimento", METHOD_ATTRIBUTES, null, new[] { typeof(DateTime) }); |
|
var pILSet = pSet.GetILGenerator(); |
|
//You must write set method code, this is just a demonstration how to do it |
|
pILSet.Emit(OpCodes.Ret); |
|
|
|
propertyBuilder.SetSetMethod(pSet); |
|
propertyBuilder.SetGetMethod(pGet); |
|
|
|
var newType = typeBuilder.CreateType(); |