Dodawanie właściwości do istniejącego typu nie jest możliwe, ale można utworzyć nowy typ w środowisku wykonawczym za pomocą narzędzia Reflection.Emit. To dość skomplikowane rzeczy i wygląda to tak:
AssemblyBuilder assemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(
assemblyName , AssemblyBuilderAccess.Run, assemblyAttributes);
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("ModuleName");
TypeBuilder typeBuilder = moduleBuilder.DefineType(
"MyNamespace.TypeName" , TypeAttributes.Public);
typeBuilder.DefineDefaultConstructor(MethodAttributes.Public);
// Add a method
newMethod = typeBuilder.DefineMethod("MethodName" , MethodAttributes.Public);
ILGenerator ilGen = newMethod.GetILGenerator();
// Create IL code for the method
ilGen.Emit(...);
// ...
// Create the type itself
Type newType = typeBuilder.CreateType();
Ten kod jest tylko próbką. Może zawierać błędy.
Można również generować klasy, kompilując kod źródłowy C# w środowisku wykonawczym przy użyciu System.CodeDom, ale nie wiem zbyt wiele na ten temat.
Sorry m rwwilden Marked to jako odpowiedź, ponieważ ta odpowiedź została stworzona z większym wysiłkiem (myśli zarówno zu wprowadzone to samo rozwiązanie) – user88637
Nie ma problemu. Zgadzam się, że jest to trochę bardziej wyszukane niż moja własna odpowiedź. –