IDE verwirft Propertys eines Components - HILFE!

Christian Kusmanow

Erfahrenes Mitglied
Hallo Tutorialer!

Ich hab ein haarespaltendes Problem. :mad:

Jedes Mal wenn ich im Designer ein Component öffne,
verwirft die VS2003 IDE alle Propertys deren Wert eine Enumeration des Components selber ist.
Wenn ich das [Localizable( )]-Attribut auf true einstelle,
pflegt Sie den Wert in die Resourcen mit ein.
Dann bekomm ich aber etliche Probleme beim Obfuscaten,
weil danach die Enumeration auf Gedei und Verderb nicht mehr gefunden werden kann.
Haltet mich bitte nicht für bekloppt, ich kann damit umgehen und sehr wohl Ausnahmen
bei der Umbenennung definieren. Aber Enumerationen die sich innerhalb von Klassen
befinden, werden danach vom ResurceReader nicht mehr gefunden.

Und wenn ich das [Localizable( )]-Attribut auf false einstelle,
erscheint folgende Meldung in der TaskList des VS wenn der Designer auf das Property gestoßen ist:
The variable 'ProgressSteppingType' is either undeclared or was never assigned.

Die PropertyDefinition:

C#:
[Serializable()]
public enum ProgressSteppingType : byte
{
	Percent = 0,
	Value,
	Action
}

ProgressSteppingType _ProgressStepping;

[Localizable( false )]
[Category( "Progress" )]
[Description( "[...]" )]
[DefaultValue(1)]
public ProgressSteppingType ProgressStepping {
	get { return _ProgressStepping; }
	set {
		_ProgressStepping = value;
		if ( !DesignMode )
			SteppingChanged();
	}
}
Vielen Dank für eure Zeit und Hilfe. :)

MfG,
cosmo
 
Zuletzt bearbeitet:
Gibt es wirklich keinen der bisher solch ein Problem gehabt hat?
Schießlich bin ich hier sicherlich nicht der einzige der selber Components erstellt, oder? :)
 
Das Attribut [DefaultValue(1)] sollte dies ja schon erledigen.
Zumindest ist es bei den FrameworkControls so.
Auch wenn ich _ProgressStepping mit einem StandardWert bei der Deklaration initialisiere,
bekomm ich die Fehlermeldung im VS. :(

Das interessante ist doch, dass wenn ich das Localizable-Attribut auf true einstelle,
alles so funktioniert wie es soll. Aber nach dem obfuscaten wird die Enumeration
innerhalb der Klasse net mehr gefunden.
Auch wenn ich alles bis zum Namespace hin nicht umbenenen lasse,
kann nicht deserialisiert werden. Hast evtl eine Idee warum das dann immer noch so ist?
Ich verwende den PreEmtive dotFuscator.

//Edit: Könnte sich ja auch mal bitte jemand melden,
der keine Probleme mit Enumerationen nach dem obfuscating bekommt.
Dann liegt der Fehler anscheinend doch bei mir. :-(
 
Zuletzt bearbeitet:
Ja, lang ist es her. :)
Hab grad bei der Suche nach einer Problemlösung diesen Thread hier wieder gefunden.

Die Lösung ist eigentlich ganz einfach. Ich hab die Enumeration innerhalb der Klasse definiert gehabt,
und das war der Grund für dieses Verhalten.
 
Zurück