Hi,
ein Regex ist kein Format-String!
Du musst auch angeben, wie die einzelnen Gruppen aufgebaut sind.
Regex vCardMatcher = new Regex("title=\"(.+) | (.+) | (.+) Jahre\" class=\"imageWrap person\">";);
Hallo mosspower,
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.
Hallo lord_fritte,
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.
Gruß,
feadur
Hallo zusammen,
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.
Viele Grüße,
feadur
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.
statt
Object serviceInstance = Activator.CreateInstance(typeof(MyThread).GetType());
das:
Object serviceInstance = Activator.CreateInstance(typeof(MyThread));
klar, absolut verständlich, das teil zu verkauen. auf der anderen seite wird er als MS mitarbeiter sicherlich nicht gerade am hungertuch nagen... =)
leider nicht mehr verfügbar, aber vielleicht bekommst du es ja noch gebraucht irgendwo:
http://www.amazon.de/Die-Kunst-programmieren-m-CD-ROM/dp/3860630989
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!
das liegt daran, dass
<asdfasd />
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.
GetFields bezieht sich nur auf Enumerations
Nein, GetFields liefert alle Felder eines Types.
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.
achso, dieses buch kann ich dazu wärmstens empfehlen:
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.
was machst du mit dem rückgabewert?
indem du nach Visual castest. z.b.
Visual v = Frame.Content as Visual;
if(v != null)
{
// v ist Visual...
}
Sorry, aber das sind Grundlagen, die du dir selbst aneignen musst.
Achso, ja das ist in WPF einfach. Schau dir z.b. mal die Klasse RenderTargetBitmap an.
wenn du einen screenshot vom ganzen bildschirm machen willst, bleibt dir nur der weg über die windows API, bzw. über die Klassen in System.Drawing.
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.
Schau dir mal die Klasse VisualTreeHelper an.
Das solltest du mit den Properties Anchor und Dock ohne zusätzliche Berechnung hinbekommen.
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... =)
Hallo J2T,
ich würde dir auch stark davon abraten, das rad neu zu erfinden.
Für einfache Stringtables bietet es sich an, den ResXCodeGenerator von Visual Studio zu benutzen, indem du einfach eine neue Resx Datei per Template hinzufügt. Dann wird eine statische Klasse generiert, die properties für jeden string anbietet.
Sehr empfehlenswert ist es, Satellite Assemblies zu erzeugen, die dann dynamisch zur Laufzeit für die jeweilige Sprache geladen werden. Damit kannst du dann auch auf einfache Weise Sprachpakete für deine Software anbieten.
An Übersetzungsagenturen gehen heutzutage nicht mehr nur Textdateien sondern meist auch die komplette Software, die dann mit professionellen Tools wie Passolo oder Catalyst übersetzt wird.
hallo HeinzTomato,
das hat er doch beschrieben, zum schnelleren plotten von graphen.
System.Windows.Forms.Integration.ElementHost ist wohl die richtige Klasse für dich.
informiere dich darüber doch einfach mal im internet. z.b. hier:
:rtfm:
wenn du VS benutzt, tipp "///" über der Methode ein.
Das ist meines Wissens gar nicht möglich, glaube .Net 2.0 muss installiert sein um VS2005 betreiben zu können.
Dann arbeitest du vielleicht noch mit .Net 1.1?
Jedenfalls sind beide Klassen im Assembly
System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
definiert. (Ab .Net 2.0)
unnütz würde ich nicht sagen, es geht eben darum, sicherzustellen, dass der Zieltyp auch genau dem entspricht was serialisiert wurde, und dabei ist der Assemblyname entscheidend. du solltest ehr das design deiner verteilten anwendung überdenken. beispielsweise könntest du das zu serialisierende objekt, das ja ein datenpaket ist, in ein gemeinsam genutztes assembly packen.
base.Text kannst du dann immer noch nicht setzen, deswegen zeigt die neue TextBox auch nichts an. Am besten speicherst du den Wert in einem neuen Feld.
du kannst ComboBox.Text nur setzen, wenn DropDownStyle != ComboBoxStyle.DropDownList.
Von daher bleiben dir nur 2 Möglichkeiten.
hallo Programmierhans,
dann kann der Benutzer aber überhaupt nichts mehr damit machen =)
Ich glaube Christel möchte nur verhindern, dass der Benutzer die ComboBox beschreiben kann.
Das Problem ist, das ich mit DropDownStyle = DropDownList beides verbiete
Warum, das Programm kann dann immer noch Änderungen an der ComboBox machen.
ja das hört sich doch gar nicht schlecht an.
du kannst dir auch mal fertige lösungen anschauen und gucken wie die sowas gemacht haben:
Wie die Exception schon sagt, ein Window Objekt kann kein Kindelement sein, sondern muss immer ein Wurzelelement im VisualTree sein. Wenn du sowas wie Docking machen möchtest musst du dir entsprechende Fensterklassen selbst basteln.
Der wert den du zurücklieferst ist ja auch vom Typ XTypedList<SimulationStep>. Du bekommst mit PropertyInfo.GetValue also den richtigen Wert.
ok jetzt kann ich es auch nachvollziehen, aber nur im Release Modus. Verstehe nicht warum das vorhin nicht so war, Optimize wird ja in VS standartmäßig gesetzt.
hallo chhof,
habe das mal getestet, weder in der debug noch in der release version werden die zuweisungen wegoptmimiert. ich denke ehr dass es bei dir an einem fehler im build prozess liegt, so dass sourcen und binaries nicht synchron sind. versuch mal alle .exe und .dlls zu löschen und das projekt komplett neu zu kompilieren (rebuild all).