Mam klasę statyczną w moim rozwiązaniu, która jest używana do pracy z różnymi złożeniami. Chcę połączyć je przez MEF, więc zrobiłem pole w klasie.Używanie C# MEF z klasami statycznymi
[Import(typeof(A))]
static private A _a1;
Wtedy mam metody, które mijam montaż nazwę jako argument:
public static A LoadPackage(string filePath)
{
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(filePath));
var _container = new CompositionContainer(catalog);
???
}
Więc jest jakiś sposób teraz importować od typu montażu określone przez filePath?
nie mogę zrobić:
_container.ComposeParts(this);
ponieważ klasa jest `statyczne i nie mogę zrobić tego
_container.ComposeParts(_a1);
(który może być całkowicie błędne, aby rozpocząć) od A
nie jakichkolwiek konstruktorów (tak _a1
jest null)
Czy jest jakiś powód, dla którego musi być statyczny? Wszystko, co importujesz/eksportujesz, będzie domyślnie Singelton, co w większości przypadków jest lepsze niż posiadanie klasy statycznej. – eandersson
jest to jedna z opcji, które rozważam. Powodem utrzymania go w stanie statycznym jest to, że nie chcę zmieniać kodu w całym moim projekcie (tj. - jestem leniwy +)). – noaRAVE
Jestem prawie pewien, że nie można używać klas statycznych bezpośrednio z MEF, ale ja nie na pewno to wiesz. – eandersson