mit weniger Aufwand wird es nicht gehen. Um Speicherplatz zu sparen (wobei das bei einem Array von 100 Bytes natürlich nicht nötig ist), könntest du auch jedes Element des Arrays eine Position nach oben verschieben und dann per Array.Resize die größe des Arrays um 1 verringern.
dann haben wir es hier mit einem teminologischen konflikt zutun. unter wpf gibt es keine "forms" mehr, da es keine Basisklasse "Form" für Dialoge mehr gibt, sondern eine "Window" klasse.
@talla: du hast natürlich recht, Blend ist ein Designer für WPF. Ich hatte angenommen, Blend 2 wäre speziell für Silverlight ausgelegt.
Dummerweise bekomme ich Exceptions, wenn ich versuche eine Silverlight Anwendung mit Blend 2 zu erstellen, obwohl ich alles nötige installiert habe.
Habt ihr da bessere Erfahrungen gemacht?
du musst schon auf den jeweiligen typ des attributs casten um die daten ausgeben zu können.
Assembly assy1 = Assembly.GetCallingAssembly();
object[] o = assy1.GetCustomAttributes(false);
foreach (Attribute att in o)
{
if (att is AssemblyDescriptionAttribute)
{
Console.WriteLine(((AssemblyDescriptionAttribute)att).Description);
}
}
wenn du "nur" informationen zur Reflection API brauchst, würde ich auch ehr sagen, dass Fachartikel im Internet, Dokumentation usw. die bessere Wahl sind.
ja, du musst auch einen verweis auf das assembly system.web.dll hinzufügen. (in VS unter "project->add reference")
vielleicht ist es aber sinnvoller sich schnell eine klasse zu schreiben die sowas - zumindest für die gängigen umlaute - selbst kann. für andere zeichen kannst du entities auch in der form &[UNICODE ZeichenNr.]; darstellen.
stichworte sind MS Orcas bzw. der XAML Designer Cider. Auch sehr empfehlenswert ist Expression Blend, was als Release Candidate zum download bereit steht.
vor allem würde ich dir zur einarbeitung ein gutes buch empfehlen, z.b.
charles petzold - application = markup + code.
passt jetzt wahrscheinlich nicht direkt zu deinem problem, da du die exe nicht neu kompilieren willst. jedenfalls hab ich neulich einen sehr interessanten artikel in der aktuellen dotnetPro gelesen, in der ein automatisches logging per AOP (spring.Net) erstellt wurde. durch den aspektorientierten ansatz müssen quasi keine änderungen am vorhandenen code gemacht werden, es wird nur ein neuer "aspekt" eingefügt.
beim löschen von elementen aus collections empfiehlt es sich, den zähler der for-schleife runterzuzählen. dann werden auch keine elemente übersprungen.
Type type = typeof(TestKlasse);
Type propertyType = type.GetProperty("Datum").PropertyType;
Type genericArgument = null;
if (typeof(Nullable<>) == propertyType.GetGenericTypeDefinition())
{
genericArgument = propertyType.GetGenericArguments()[0];
if (typeof(DateTime).IsAssignableFrom(genericArgument))
{
//generisches Argument ist DateTime...
}
}
sowas in der art gab es neulich schon: Mal ne Verständnissfrage zu get;set;
das was du als Attribut bezeichnest nennt man eigentlich Property. Attribute sind Metadaten, die für Klassen oder Methoden angegeben werden können.