Hallo, ich versuche gerade ein Projekt zu verstehen "RoslynPad" weil ich teilweise bei mir davon was Implementieren will
Aber beim besten willen was passiert hier
var container = new ContainerConfiguration()
.WithAssembly(typeof(MainViewModelBase).Assembly) // RoslynPad.Common.UI
.WithAssembly(typeof(MainView).Assembly); // RoslynPad
var locator = container.CreateContainer().GetExport<IServiceProvider>();
_viewModel = locator.GetService<MainViewModelBase>();
Die Ausnahme die ausgelöst wird bringt mich nämlich auch nicht wirklich weiter.
Fehlermeldung:
System.Windows.Markup.XamlParseException
HResult=0x80131501
Message=Zeilennummer "15" und Zeilenposition "10" von "Durch den Aufruf des Konstruktors für Typ "ThePLCProject.Ui.Editor.Views.MainView", der den angegebenen Bindungseinschränkungen entspricht, wurde eine Ausnahme ausgelöst.".
Source=PresentationFramework
StackTrace:
at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)Inner Exception 1:
CompositionFailedException: Only one export for the contract 'IServiceProvider' is allowed, but the following parts: 'SystemCompositionServiceProvider', 'SystemCompositionServiceProvider' export it.
Schon mal vielen Dank für die Geduld
Gruß
Ist das eine Fehlermeldung mit dem original RoslynPad-Projekt? Oder hast du Sourcen davon in dein Projekt übernommen und erhältst dann diesen Fehler?
Durch das WithAssembly
wird anscheinend zweimal dieselbe Assembly eingebunden (und dadurch für IServiceProvider
die Klasse SystemCompositionServiceProvider
zweimal registriert).
Wenn du die Sourcen alle in einer Assembly hast, reicht ein Aufruf von WithAssembly
.
Hallo jok3r89,
die Funktion WithAssembly durchsucht die angegebene Assembly nach Import/Exports Attributen und registriert diese. Die Fehlermeldung deutet auf eine Mehrfachregistrierung hin.
Fehlermeldung:
"**Only one export **for the contract 'IServiceProvider' is allowed, but the following parts: 'SystemCompositionServiceProvider', 'SystemCompositionServiceProvider' export it."
Befinden sich MainView und MainViewModelBase in der gleichen Assembly?
Cheers.
Hallo,
Der Code wurde angepasst RoslynPad befindet sich jetzt auch im gleichen Projekt.
Wenn ich das richtig verstehe könnte ich dann komplett darauf verzichten?
Edit:
var container = new ContainerConfiguration()
.WithAssembly(typeof(MainView).Assembly);
var locator = container.CreateContainer().GetExport<IServiceProvider>();
So gehts erst mal.
Also bisher finde ich es doch ganz schön übertrieben komplex so recht sind mir scheinbar die Vorteile noch nicht bewusst...
Vielen Dank fürs Helfen
Gruß