Create method override C# with Example



Create method override C# with Example

This example shows how to override ToString method in generated class 
// create an Assembly and new type 
var name = new AssemblyName("MethodOverriding"); 
var dynAsm = AppDomain.CurrentDomain.DefineDynamicAssembly(name, AssemblyBuilderAccess.RunAndSave); 
 

var dynModule = dynAsm.DefineDynamicModule(name.Name, $"{name.Name}.dll"); 
var typeBuilder = dynModule.DefineType("MyClass", TypeAttributes.Public | TypeAttributes.Class); 
// define a new method 
var toStr = typeBuilder.DefineMethod( 
"ToString", // name 
MethodAttributes.Public | MethodAttributes.Virtual, // modifiers 
typeof(string), // return  type 
Type.EmptyTypes); // argument types 
var ilGen = toStr.GetILGenerator(); 
ilGen.Emit(OpCodes.Ldstr, "Hello, world!"); 
ilGen.Emit(OpCodes.Ret); 
// set this method as override of object.ToString 
typeBuilder.DefineMethodOverride(toStr, typeof(object).GetMethod("ToString")); 
var type = typeBuilder.CreateType(); 
// now test it: 
var instance = Activator.CreateInstance(type); 
Console.WriteLine(instance.ToString()); 
 

0 Comment's

Comment Form