Hi,
ich habe eine Klasse, die wie folgt aussieht:
Diese Stringkonstanten verwende ich z. B. in einem Attributkonstruktor:
Wenn ich jetzt als Release ohne Debug-Information/Konstante kompiliere, wird laut Reflektor/ILSpy daraus das:
Genau so will ich es haben.
Was mich jetzt aber stört, ist, dass die Deklarationen der Konstanten bestehen bleiben. d. h. die Klasse "Foobar" enthält immer noch die oben definierten Konstanten. Das macht ja auch Sinn.
Das sieht im IL so aus:
Ich möchte erreichen, dass diese verschwinden, sodass die Klasse leer ist (am besten möchte ich die komplette Klasse entfernen, da diese nur aus den Konstanten besteht).
Ich stelle mir da etwas Präprozessor-Artiges ala #define Abc "testDastesttest" vor. Das geht in C# allerdings nicht. Gibt es vielleicht Compilerattribute, die man an die Konstanten kleben kann, damit der Compiler weiß, dass er diese nicht in die finale Assembly mit aufnehmen soll? Schließlich werden die Konstanten am Ende nirgends referenziert, was ja bedeutet, dass die Deklarationen eigentlich nicht mehr gebraucht werden (außer natürlich, wenn man sie für externe zugänglich macht).
Hat jemand eine Idee, wie man sowas erreichen kann?
nikeee
ich habe eine Klasse, die wie folgt aussieht:
Diese Stringkonstanten verwende ich z. B. in einem Attributkonstruktor:
Wenn ich jetzt als Release ohne Debug-Information/Konstante kompiliere, wird laut Reflektor/ILSpy daraus das:
Genau so will ich es haben.
Was mich jetzt aber stört, ist, dass die Deklarationen der Konstanten bestehen bleiben. d. h. die Klasse "Foobar" enthält immer noch die oben definierten Konstanten. Das macht ja auch Sinn.
Das sieht im IL so aus:
Ich möchte erreichen, dass diese verschwinden, sodass die Klasse leer ist (am besten möchte ich die komplette Klasse entfernen, da diese nur aus den Konstanten besteht).
Ich stelle mir da etwas Präprozessor-Artiges ala #define Abc "testDastesttest" vor. Das geht in C# allerdings nicht. Gibt es vielleicht Compilerattribute, die man an die Konstanten kleben kann, damit der Compiler weiß, dass er diese nicht in die finale Assembly mit aufnehmen soll? Schließlich werden die Konstanten am Ende nirgends referenziert, was ja bedeutet, dass die Deklarationen eigentlich nicht mehr gebraucht werden (außer natürlich, wenn man sie für externe zugänglich macht).
Hat jemand eine Idee, wie man sowas erreichen kann?
nikeee
Von meinem iPhone gesendet
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „nikeee13“ ()