tags:

views:

61

answers:

1

Hi,

I am writing a small plugin architecture and I have decided to use MEF I have been told that we must use a config file.

Is there any example out there that that uses Mef and a config file?

All I need is how to set up mef in a config file is this possible? This is a small noddy example I have built to test it I am missing the loadPlugin function and config file Can you help

Noddy example

                       //MyCompany.Payment.Contracts.dll

        public interface IPayment
        {
            bool Pay();
        }
        //MyCompany.Payment.ServiceProviderOne.dll
          [Export(typeof(IPayment))]
        public class ServiceProviderOne:IPayment
        {
            public bool Pay(return true);
        }
        //MyCompany.Payment.ServiceProviderTwo.dll
          [Export(typeof(IPayment))]
        public class ServiceProviderTwo:IPayment
        {
            ?public bool Pay(return true);
        }

        //Main Console.Applicaiton
        class Program
            {
                static void Main(string[] args)
                {
                    HelperPlugin helperPlugin =new HelperPlugin();
                    List<IPayment> myLoadedPayments= helperPlugin.GetPlugins();

                    //blahhh conti
                }
            }

            public cass HelperPlugin
            {
                [ImportMany(typeof(IPayment))]
                public List<IPayment>Payments { get; set; }

                public List<IPayment>GetPlugins()
                {
                    Payments=new List<IPayment>();
                    LoadPlugins();

                    return Payments;
                }

                private void LoadPlugins()
                {
                 ???
                }
            }

Config File What does it look like?

Thanks for any suggestions or code snippets

+1  A: 

I'm working on a similar issue right now and my approach is this:

  • I'm planning to have a config file that defines how my CompositionContainer will be configured
  • My config should contain a list of directories for the container to scan (by using a DirectoryCatalog for each directory specified)
  • and my config should also support a list of assemblies that might be stored elsewhere, and that would be included by having several AssemblyCatalog used for that purpose

So basically, I'm trying to configure the individual catalogs that make up my AggregateCatalog which the composition container will use to find the parts. Not there yet, unfortunately - so this is just in my head for now - no code just yet.

marc_s