wie schon gesagt sollte man sich genau überlegen, ob man die Exception Texte lokalisieren möchte.
Völlig unüblich ist das nicht, Microsoft macht es im .NET Framework ja auch. Eine elegante Lösung des Problems ist es, eine Resource Datei mit VS anzulegen, nennen wir sie mal StringTable.resx. Du trägst deinen (Quell-) String dort ein und gibst ihm einen Namen, z.b. MyExceptionText. Danach ersetzt du den String im Code mit dem von VS generieren Property.
catch(FormatException) {
throw new EdiException(EdiErrorConstants.FILE_VALIDATION_ERROR,
String.Format(StringTable.MyExceptionText,
new Object[] { fieldValue,
ediField.Name,
ediField.MappingName,
(i + 1),
positionCounter,
(j + 1),
ediConfig.Id } ));
Jetzt ist natürlich darauf zu achten, dass zukünftige Übersetzungen auch entsprechend der Anzahl der Parameter in String.Format formatiert sind.
Jetzt musst du die resx Datei nur noch in die Zielsprachen übersetzen, wie das geht beantwortet dir das Forum unter den Stichpunkten Internationalisierung/Lokalisierung.
EDIT: Ok ich musste nur x:Key hinzufügen, warum auch immer..
ResourceDictionary implementiert IDicationary<object, object>. Man kann IDictionary<TKey,TValue> keine Werte hinzufügen, ohne einen Key anzugeben. Von daher macht die Fehlermeldung durchaus Sinn.
hat jemand eine Idee, wie das Silverlight Preview in VS 2008 funktioniert?
Ich würde so etwas ähnliches gerne für eine WinForms Anwendung realisieren.
Der Benutzer liefert die Assemblies der Silverlight Anwendung mitsamt XAML Dokumenten und diese werden dann in der WinForms Anwendung angezeigt.
Natürlich könnte man einfach das Silverlight Markup für WPF übertragen und es dort anzeigen. Abgesehen von Resources, Bindings usw. ist das ja nicht so aufwändig. Da Silverlight aber != WPF ist, würde ich es gerne innerhalb der Silverlight Runtime realisieren.
Mein erster Ansatz war, eine Silverlight Anwendung zu erstellen und per WebBrowser Control zu hosten. Aber dann bewegt man sich innerhalb der Sicherheitsbeschränkungen, so dass z.b. der Aufruf von Assembly.LoadFrom() zu einer MethodAccessException führt, von daher fällt diese Option schon mal flach. Denn ich komme am laden der Assemblies und der Instanzerzeugung mittels Reflection natürlich nicht vorbei.
Gibt es Interop Mechanismen um Silverlight Controls in WPF anzeigen zu können? Leider habe ich noch nichts dergleichen finden können.
das liegt an der arbeitsweise von asp.net. eine web-form hat keinen zustand, das heisst sie lebt nur in der zeit zwischen der http anfrage und der rückantwort des servers. deshalb wird die klasse bei jeder anfrage neu erstellt und i auf den startwert zurück gesetzt. wenn du oop lernen willst, solltest du nicht mit web-forms anfangen sondern mit einfachen sachen wie konsolenanwendungen.
schade dass lutz das teil nicht als open source veröffentlicht hat. jetzt wird aus einem tollen freeware tool eine kommerzielle software, von der nur eine sehr abgespeckte version umsonst aber bestimmt mit massig werbung freigegeben wird.
schade!
nur von einem XmlElement Objekt repräsentiert wird, es gibt kein separates EndElement. Du kannst jedoch mit XmlElement.IsEmpty prüfen, ob es ein leeres Element wie oben ist.
du kannst auch einfach einen enum im konstruktor übergeben und basierend darauf deine IBericht Instanz erzeugen. Eine andere Möglichkeit wäre eine generische Methode, dann müssten aufrufende Klassen aber die konkreten Implementierungen kennen. Deshalb würde ich die eunm / Factory variante vorziehen.
Nimm den .Net Reflector von Lutz Roeder.
Dafür gibt es auch ein Add-In was den gesamten Sourcecode wieder in .cs Dateien schreibt. Das hat zwar ein gewisses Missbrauchspotential, aber in deinem Fall ist es genau das richtige.
Abgesehen davon, dass stark davon abzuraten ist, auf private Members eines Objekts zuzugreifen, kannst du es so machen:
class Program
{
static void Main(string[] args)
{
MyClass mc = new MyClass();
FieldInfo fieldInfo = typeof(MyClass).GetField("_value", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
int value = (int) fieldInfo.GetValue(mc);
}
}
class MyClass
{
private int _value = 10;
}
ok, ich muss zugeben, dass ich noch nie in den genuss eines solch teuren kurses gekommen bin, von daher kann ich nicht beurteilen inwiefern das etwas bringt. jeder lernt natürlich auch anders, ich gehe da ehr in richtung autodidakt und lerne lieber selbst anstatt mir dinge beibringen zu lassen.
ich erinnere mich da an einen 2-tage crashkurs hier in der firma zum thema WCF. der dozent war sehr kompetent und es hat auch viel spass gemacht, nur leider war das meiste wissen nach ein paar tagen schon wieder weg, weil einfach zu viel in zu kurzer zeit vermittelt wurde.
ich persönlich halte schulungen nichts, die grundlagen vermitteln wollen. grundlagen sollte man sich am besten eigenständig aneignen, indem man z.b. ein gutes buch von vorne bis hinten durcharbeitet und selbst dinge ausprobiert. das ist auch deutlich günstiger als 1590€... =) in 5 tagen sämtliche .net grundlagen drauf zu haben kann glaube ich auch der beste kurs nicht leisten.
während des sortierens weisst du noch nicht, wo das element später landen wird, du stellst ja nur die vergleichslogik bereit. alternativ kannst du dir natürlich einen eigenen sortieralgorithmus implementieren, aber das wäre viel aufwendiger als die liste nach dem sortieren einfach nochmal durchzugehen.
das kann man auf grundlage des von dir geposteten codes nicht sagen. du musst controlToRender nicht zu Visual casten, weil FrameworkElement von Visual erbt.
Du suchst bestimmt eine Docking Library für WPF. Kommerzielle Lösungen gibt es da schon einige (DotNetBar.WPF, Infragistics, usw.) Auf Codeproject gibt es dazu auch einen netten Artikel, die Implementierung ist allerdings nicht so der Hit.
ich habe danach auch ewigkeiten gesucht - ohne erfolg.
Mono.Cecil und PostSharp können zwar Assemblies lesen und ändern, sind aber in dem Sinne keine Parser. Das Objektmodell reicht "nur" bis zur Methodenebene (und dem darin enthaltenen IL Code).
Der einzige mir bekannte IL Parser ist der .Net Reflector von Lutz Roeder, der auch eine API dafür bietet, die ist allerdings für die Entwicklung von Reflector Add-Ins gedacht und das Objektmodell hat mit CodeDom auch nichts zutun.
Für mich ein klarer Fall für ein Open Source Projekt... =)