Funktion aus anderen Namespace überschreiben und dort auch verwenden lassen, ohne override # möglich?
-
Hi,
Ich habe ein Funktion in einem anderen Namespace, in einer Klasse. Diese wird dann wiederum in einen anderen Namespace in einer anderen Klasse verwendet. Kann ich nun irgendwie, die Funtkion naträglich noch überschreiben? So dass überall meine neue Funktionsdefinition verwendet wird?
-
Kannst du etwas konkreter werden? Ich kann nämlich dem was du da schreibst nicht ganz folgen.
-
hmm, ich möchte quasi eine bestehende Funktion einer Klasse verändern, so dass meine neue Definition selbst in der Klasse in der sie ursprünglich geschrieben wurde verwendet wird.
Extremes Beispiel: Ich verändere den +operator. Nun soll z.B eine Klasse ABC, die eine Funktion Summe hat diesen dort auch verwenden, so dass dann bei ABC.Summe etwas anderes herauskommt.
Die Klasse ABC habe ich nur in einer dll. Dort wird die Klasse ABC auch in der Klasse DEF verwendet. Da soll dann auch in ABC.Summe meine neue definition verwendet werden.
-
Das geht nur mit Änderung des Source- (bzw. IL-) Codes, s. z.B. .NET CLR Injection: Modify IL Code during Run-time.
Andere Ansätze (diese erfordern aber Änderung des Design und Neukompilierung) wären Aspektorientierte Programmierung (AOP) oder aber z.B. mittels Microsoft Fakes.
-
Danke Th69, das schaue ich mir mal an:
Andere Ansätze (diese erfordern aber Änderung des Design und Neukompilierung)
Neukompilierung der dll ist gemeint, oder?
-
Ja.