Ich spiele gerade mit dem neuen System.ComponentModel.Composition Namespace in .NET 4.0 Beta 2, auch bekannt als die Managed Extensibility Framework .
Ich verwende das folgende C#-Beispiel, in dem eine Monkey
importiert ein Banana
:
public interface IBanana
{
}
[Export(typeof(IBanana))]
public class Banana : IBanana
{
}
public class Monkey
{
[Import(typeof(IBanana))]
public IBanana Banana { get; set; }
}
Wenn ich jedoch versuche, den Affen wie folgt zu komponieren, erhalte ich eine InvalidOperationException
mit der Nachricht " Dieses Objekt wurde nicht initialisiert - die Eigenschaft 'SourceProvider' muss gesetzt werden. ":
var exportProvider = new CatalogExportProvider(new TypeCatalog(typeof(Banana)));
var container = new CompositionContainer(exportProvider);
var monkey = new Monkey();
container.ComposeParts(monkey);
Was übersehe ich hier? Ich bin mir bewusst, dass ich den Katalog direkt übergeben kann, ohne ihn in einen CatelogExportProvider zu verpacken, aber sollte das oben genannte nicht auch funktionieren?