Click here to Skip to main content
15,896,726 members
Articles / Desktop Programming / Windows Forms

Windows Forms Modular App Using MEF

Rate me:
Please Sign up or sign in to vote.
4.93/5 (34 votes)
12 Nov 2014CPOL7 min read 101.2K   6.4K   106  
Creating a modular Windows Forms app using MEF.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ModularWinApp.Core.Interfaces;

namespace ModularWinApp.Core
{
    //A module command concrete class with parameter and output type
    public class ModuleCommand<InType, OutType> : ICommand
    {
        //This delegate will point to a function
        private Func<InType, OutType> _paramAction;

        //Constructor receiving the delegate as parameter
        public ModuleCommand(Func<InType, OutType> paramAction_)
        {
            _paramAction = paramAction_;
        }

        //Execute the delegate
        public OutType Execute(InType param_)
        {
            if (_paramAction != null)
                return _paramAction.Invoke(param_);
            else
                return default(OutType);
        }
    }

    //A module command concrete class with only output type
    public class ModuleCommand<OutType> : ICommand
    {
        //This delegate will point to a function
        private Func<OutType> _action;

        //Constructor receiving the delegate as parameter
        public ModuleCommand(Func<OutType> action_)
        {
            _action = action_;
        }

        //Execute the delegate
        public OutType Execute()
        {
            if (_action != null)
                return _action.Invoke();
            else
                return default(OutType);
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Team Leader ActionPoint
Ireland Ireland
I'm Brazilian currently living in in Limerick, Ireland. I've been working with software development since 1996.

Comments and Discussions