genau für solche Sachen gibt es MEF(Managed Extensibility Framework). Dort definierst du einen Contract(Vertrag) als Interface. Die einzelnen Plugins importieren dann das Contract über das Interface. Schau dir das mal an.
Alternativ kannst du das Mediator-Pattern verwenden. Ich würde das nicht machen und lieber zu MEF greifen.
das bedeutet, dass du so auf die die Eigenschaft FirstGenre nicht zugreifen kannst. Die Eigenschaft besitzt keinen Setter, das wohl auch aus einem guten Grund. Schau dir lieber mal das API-Design der Library an.
wenn du Glück hast, bietet Firefox eine API an. Wenn nicht, dann kannst du das wie hier machen. Firefox ist Open-Source. Du kannst mal in den Quellcode schauen, dort wirst du sehen, wie die Oberfläche programmiert worden ist. Aber warum so kompliziert? Warum verwendest du nicht die WebClient-Klasse oder ähnliches?
Events kannst du nicht mit Interfaces vergleichen! Den Unterschied verstehe ich auch nicht, die anderen werden dich wohl auch nicht verstehen. Kannst du uns das ein wenig genauer erläutern?
die Frage wurde schon mehrmals bei uns im Forum besprochen. Verwende doch bitte die Forensuche.
Dir bleibst nichts anderes übrig, als zur Win32-API zu greifen. Mit SendMessage musst du dann die einzelnen Nachrichten manuell zuschicken. Das funktioniert aber auch nur bei nativen Anwendungen. Bei .NET-Anwendungen hingegen musst du mit dem UIAutomationProvider arbeiten.
Wenn du Glück hast, bietet Outlook eine API an. Such mal, vielleicht wirst du fündig.
es ist nicht möglich aus einem MD5-Hash das Passwort wieder zu entschüsseln. Das macht keinen Sinn und das wäre auch nicht der Sinn eines Hashes. Stattdessen kannst du einen anderen Verschlüsselungsalgorithmus verwenden oder du vergleichst zwei Hashes miteinander.
Wenn du dir nicht sicher bist, was als Typ zurückkommt, kannst du einfach var nehmen. Schau dir var dann im Debugger an oder verwende die GetType-Methode. Es kommt immer drauf an, ob die letze Methode dir z.B. eine IEnumerable<T> oder eine List<T> gibt.
warum vergibst du deinem Button nicht einfach einen Namen und fertig? Dann kannst du einfach über den logischen Baum(logical Tree) drüberlaufen und schauen, ob ein solches Control mit dem Namen XY existiert. Hier ein Beispiel. Aber mal wirklich, warum machst du dir das alles so kompliziert? Es gibt auch einfache Lösungen.
beinhaltet das Datenbankprojekt auch eine mdf-Datei? Wenn ja, dann kannst du auch so auf die Datei zugreifen. Du musst nicht unbedingt die Datenbankdatei in den SQL Server einhängen! Wenn du die Datenbankdatei direkt verwenden möchtest, kann du das tun, indem du in Visual Studio z.B. ein LINQ to SQL Classes-Projekt anlegst und dort bei der Connection die Art änderst. LINQ to SQL Classes hat den Vorteil, dass die Tabellen aus der Datenbank in C#-Klassen gemappt werden. Das nennt man auch O/R-Mapper.
für mich sieht das so aus, dass die Klasse nicht instanziiert werden kann, weil das Interface ein welches ist oder nicht die richtige Klasse ist. Prüf noch zur Sicherheit, ob die Referenzen alle stimmen und mach einen Rebuild.
ich würde ganz klassisch die XML-Datei einlesen und diese dann verarbeiten. Bevor du dann noch ein Konstrukt mit ganz vielen if-Abfragen aufbaust, würde ich dir raten das via Reflection zu lösen. In der XML-Datei stehen dann die einzelnen Methoden drinne. Die sind so aufgebaut, dass jedes Element eine Methode repräsentiert. Dann via Reflection einfach jede Methode "invoken".
Hallo gfoidl,
ich vertehe nicht, wieso es das Chain of responsibility-Pattern ist. Aus welchem Grund überhaupt?
du kannst zur DesignTime ein paar Testdaten laden und diese dann anzeigen. Visual Studio bietet bei langem noch nicht so viel Komfort wie Expression Blend. Stichwort: DesignTime.
und genau das ist der Punkt. Der Container übernimmt alles. Du instanziierst also selber keine Klassen, sondern lässt diese vom Container instanziieren. Ich empfehle dir den Link von gfoidl durchzulesen. Beschäftige dich mit dem Thema IoC/DI. Wir sind nicht dazu da, dir etwas zu erklärenen. Lesen kannst du, lernen kannst du.
und im profiler sieht man auch, dass ständig die gesamte listbox neu gezeichnet wird.
Das kann dann wohl nur das Binding sein. Schau mal, ob das mit Testdaten genau so ist. Es wäre auch möglich, dass irgendwo der Speicher nicht freigegeben wird. Über das Thema habe ich gebloggt. ;)