public SimpleAssemblyProvider(string testFileFullPath) { //uchováme cestu k "definujícímu" souboru _fullPath = testFileFullPath; //jméno assembly odvodíme od názvu souboru _name = Path.GetFileName(_fullPath); //připravíme kontejner kam vložíme definovanou metodu _methods = new HashedMethodContainer(); //vytvoření metody začneme přípravou typu, kde je definovaná _declaringType = TypeDescriptor.Create("MEFEditor.ProviderTest"); //určíme jméno metody var methodName = "GetDefiningAssemblyName"; //návratový typ metody var returnType = TypeDescriptor.Create <string>(); //z definovaných údajů můžeme vytvořit popis //metody, která nebude mít žádné parametry a bude statická var methodInfo = new TypeMethodInfo( _declaringType, methodName, returnType, ParameterTypeInfo.NoParams, isStatic: true, methodTypeArguments: TypeDescriptor.NoDescriptors); //k dokončení definice metody stačí vytvořit //generátor jejích analyzačních instrukcí var methodGenerator = new DirectedGenerator(emitDirector); //definovanou metodu vytvoříme var method = new MethodItem(methodGenerator, methodInfo); //aby byla metoda dohledatelná, musíme ji ještě zaregistrovat _methods.AddItem(method); }