Я использовал пример для extensible asp.net mvc 3 , чтобы создать мое подключаемое приложение, но столкнулся с проблемой. В плагине я объявил и реализовал интерфейс.
Но в подключаемом контроллере, когда я хочу использовать этот класс, приложение выдает ошибку, и кажется, что EntityConfig не был инициализирован. Как это можно исправить?
[Export(typeof(IController)), ExportMetadata("controllerName", "Concept")]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class ConceptController : Controller
{
[Import(typeof(IEntityConfig))]
private IEntityConfig EntityConfig;
public ActionResult Index()
{
var obs = EntityConfig.EntityName;
return View("~/Bin/Views/Concept/Index.cshtml",obs );
}
}
public interface IEntityConfig
{
string EntityName { get;}
}
[Export(typeof(IEntityConfig))]
public class TestEntity : IEntityConfig
{
public string EntityName
{
get{return "Test";}
}
}
Отредактировано:
С другой стороны, когда я использую этот пример, нет проблем с разрешением EntityConfig, но с точки зрения, когда я хочу загрузить модель следующим образом:
@using Concepts
@model Concepts.Models.TestModel
приложение выдает ошибку и сообщает мне: «Тип или имя пространства имен« Концепции »не могут быть найдены», хотя, когда я проверяю контейнер после того, как он был инициирован, я вижу «Концепции» в загруженных сборках ».
Не могли бы вы помочь мне?
Спасибо.
Отредактировано :
Я загрузил образцы:
Первый
Второй
Отредактировано (2011/22/09):
Я тестировал приведенный выше код на другом образце , который @Matthew Abbott предоставил в своем блоге, и он работал, хотя этот пример был создан на основе mvc 2.0.