Ich denke, Sie haben falsch verstanden, was Reflexion ist. Mit Reflection können Sie den ausgeführten Code nicht ändern. Es kann Ihnen erlauben, Ihren eigenen Code zu lesen und sogar diesen Code auszuführen.
Mit Reflection.Emit können Sie eine ganz neue Assembly schreiben und dann in den Speicher laden.
Sie können jedoch keine Klasse zur Laufzeit ändern. Stellen Sie sich vor, Sie haben eine Klasse Foo, Sie installieren eine ganze Reihe von ihnen, dann entscheiden Sie, die Klasse zu ändern.
Was soll mit all den Foos geschehen, die Sie bereits installiert haben?
Was Sie jedoch tun können, ist Reflection.Emit, um eine neue Klasse zu erstellen, die Foo, genannt Bar, erbt und dann alles, was Sie zu dieser Klasse brauchen, hinzufügt.
Alternativ können Sie IL Weaving / AOP betrachten, wenn Sie eine Eigenschaft nach der Kompilierungszeit, aber VOR der Laufzeit programmgesteuert zu einer Klasse hinzufügen möchten. Ich schlage vor, PostSharp oder Fody zu betrachten wenn Sie interessiert sind.
Ja, Sie können die Klasse %code% verwenden, um dies zu erreichen.
%Vor%Ich denke, Sie haben falsch verstanden, was Reflexion ist. Mit Reflection können Sie den ausgeführten Code nicht ändern. Es kann Ihnen erlauben, Ihren eigenen Code zu lesen und sogar diesen Code auszuführen.
Mit Reflection.Emit können Sie eine ganz neue Assembly schreiben und dann in den Speicher laden.
Sie können jedoch keine Klasse zur Laufzeit ändern. Stellen Sie sich vor, Sie haben eine Klasse Foo, Sie installieren eine ganze Reihe von ihnen, dann entscheiden Sie, die Klasse zu ändern.
Was soll mit all den Foos geschehen, die Sie bereits installiert haben?
Was Sie jedoch tun können, ist Reflection.Emit, um eine neue Klasse zu erstellen, die Foo, genannt Bar, erbt und dann alles, was Sie zu dieser Klasse brauchen, hinzufügt.
Alternativ können Sie IL Weaving / AOP betrachten, wenn Sie eine Eigenschaft nach der Kompilierungszeit, aber VOR der Laufzeit programmgesteuert zu einer Klasse hinzufügen möchten. Ich schlage vor, PostSharp oder Fody zu betrachten wenn Sie interessiert sind.
Ja, Sie können die Klasse %code% verwenden, um dies zu erreichen.
%Vor%Ich denke, Sie haben falsch verstanden, was Reflexion ist. Mit Reflection können Sie den ausgeführten Code nicht ändern. Es kann Ihnen erlauben, Ihren eigenen Code zu lesen und sogar diesen Code auszuführen.
Mit Reflection.Emit können Sie eine ganz neue Assembly schreiben und dann in den Speicher laden.
Sie können jedoch keine Klasse zur Laufzeit ändern. Stellen Sie sich vor, Sie haben eine Klasse Foo, Sie installieren eine ganze Reihe von ihnen, dann entscheiden Sie, die Klasse zu ändern.
Was soll mit all den Foos geschehen, die Sie bereits installiert haben?
Was Sie jedoch tun können, ist Reflection.Emit, um eine neue Klasse zu erstellen, die Foo, genannt Bar, erbt und dann alles, was Sie zu dieser Klasse brauchen, hinzufügt.
Alternativ können Sie IL Weaving / AOP betrachten, wenn Sie eine Eigenschaft nach der Kompilierungszeit, aber VOR der Laufzeit programmgesteuert zu einer Klasse hinzufügen möchten. Ich schlage vor, PostSharp oder Fody zu betrachten wenn Sie interessiert sind.
Ja, Sie können die Klasse ExpandoObject
verwenden, um dies zu erreichen.
Tags und Links .net c# .net-4.0 reflection properties