Импорт методов из DLL в MVC - PullRequest
       8

Импорт методов из DLL в MVC

0 голосов
/ 12 сентября 2018

Я хочу импортировать методы из .dll-файлов в MVC и запускать их в действии контроллера. Возможно ли использовать MEF? Да, как мне поступить?

1 Ответ

0 голосов
/ 18 сентября 2018

Я наконец-то заработал.Написание этого ответа на случай, если кто-то будет поражен здесь.

Интерфейсная DLL

namespace MefContracts
{
    public interface IPlugin
    {
        String Work(String input);
    }
}

Плагин, содержащий требуемый метод

namespace Plugin
{

    [Export(typeof(MefContracts.IPlugin))]
    public class Mytest:MefContracts.IPlugin
    {
        public String Work(String input)
        {
            return "Plugin Called from dll with (Input: " + input + ")";
        }
    }

}

Program.cs

(включите это в основной проект MVC) .Этот класс содержит функцию, которая связывает все операции импорта и экспорта.

namespace MyTest
{
    public class Program
    {
        private CompositionContainer _container;

        [Import(typeof(MefContracts.IPlugin))]
        public MefContracts.IPlugin plugin;

        public Program()
        {
            var catalog = new AggregateCatalog();
            catalog.Catalogs.Add(new DirectoryCatalog(@"D:\Temp"));


            _container = new CompositionContainer(catalog);


            try
            {
                this._container.ComposeParts(this);
            }
            catch (CompositionException compositionException)
            {
                Console.WriteLine(compositionException.ToString());
            }
        }
    }
}

Наконец, вызов этого метода из вашего контроллера

public class HomeController : Controller
    {
        Program p = new Program();

        public ActionResult Index()
        {
            ViewBag.Message = p.plugin.Work("test input");
            return View();
        }
    }
...