"Eigenlob stinkt", sagt man doch, oder?
Da ich (aus zeitlichen Gründen wegen meines normalen Jobs) schon seit über einem Jahr nichts mehr mit RO zu tun habe (letztes Post dort Dezember 2011, ich bin auch
hier auf der Teamseite schon lange nicht mehr gelistet), würde ich da gerne wissen wie Du da noch auf 'Eigenlob' kommst
Ab und zu chatte ich noch mit den Jungs, aber da kam ehrlich gesagt auch nicht genug bei rum dass es sich noch gelohnt hätte.
Ganz Ehrlich:
Gegen Prism / Oxygene spricht ganz eindeutig die zu geringe Verbreitung und die komplett fehlende Toolunterstützung a) seitens offenerer
API's bei MS und b) seitens Drittherstellern für z.B. Refactoring-Tools).
Das ist ein so großes Manko, dass es fast nicht mehr aufgewogen mehr kann - ausser man ist ein absoluter Pascal-Verfechter und die Vorteile der besser lesbaren Syntax des Pascal-Codes überwiegen im Einzelfall die anderen Produktivitätsvorteile in anderen .Net Sprachen.
Ausnahmefall: Man will tatsächlich a) auf Pascal setzen und b) tatsächlich für .Net (Windows Phone / Win RT), Java (Android) und Cocoa (Mac/iOS) die gleichen Anwendungen *jeweils nativ* schreiben. Dann gibt es ausser MonoTouch/MonoDroid (das ja überall über ein .Net Zwischenkompilat geht) keine Alternative.
Dennoch: Die Contracts.StaticMethod(checksomething)
API (neu seit .NET 4) ist so extrem häßlich gegenüber den wunderbar direkt in die Klassen und Methoden eingewobenen Code Contracts, die es in Oxygene schon gab wo es noch Chrome hiess (also in v1, vor etlichen Jahren).
Für AOP braucht man in anderen .NET Sprachen extra Post-Compiler die den fertigen
IL-Code auseinandernehmen, die Aspekte unterjubeln und neuen
IL generieren. Und dabei dann fast alle vergessen die PDB's neu zu schreiben, so dass in Stack traces bei Exceptions nicht die richtigen Zeilennummern stehen (wenn überhaupt die richtige Methode). In Oxy ist das gleich des Compilers (und funktioniert übergreifend für Java und Cocoa auch genauso wie in .Net), weil man hier direkt im Compilierungsprozess drin steckt, sozusagen als Compiler-Plugin.
Auch inline Interfaces (kamen aus Java) wären in C# manchmal schön.
Ein bisschen fehlen mir die Features, aber das wird alles in allem eben durch das super-Tooling in der .Net Welt (ReSharper, Reflector, LinqPad...) alles wieder mehr als aufgewogen.