Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / помогите с примером / 3 сообщений из 3, страница 1 из 1
20.10.2011, 14:01:07
    #37490623
bobsvt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с примером
Делаю пример из книги ASP NET MVC 2 для профессионалов.

вот мой код


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<configSections>
    <section name="castle" type ="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor"/>

.........

<castle>
    <components>
   
      <component id="ProdsRepository"
                 service ="DmainModel.Abstract.IProductRepository, DmainModel"
                 type ="DmainModel.Concrete.SqlProductsRepository, DmainModel">
        <parametrs>
          
          <connectionString>
           Server=.\SQLEXPRESS;Database=SportStore;Trusted_Connection = yes;"
          </connectionString> 
          
        </parametrs>
      </component>
    </components>
  </castle>

............
</configSections>



класс выгрузки данных

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
namespace DmainModel.Concrete
{
    public class SqlProductsRepository : IProductRepository 
    {

        private Table<Product> productTable;

        public SqlProductsRepository(string  connectionString)
        {
            productTable = (new DataContext( connectionString)).GetTable<Product>();
        }

       public IQueryable<Product> Products
       {
            get { return productTable; }
        
        }
    }
}

вот интерфейс который реализует класс выше
Код: plaintext
1.
2.
3.
4.
5.
6.
namespace DmainModel.Abstract
{
    public  interface IProductRepository
    {
        IQueryable<Product> Products { get; } 
    }
}


вот замена фабрики контроллеров MVC на Castle

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
namespace WebUI
{
    //наследуем дефолтный класс управления контроллерами
    public class WindsorControllerFactory : DefaultControllerFactory
    {

        //создаем контейнер
        WindsorContainer container;

        public WindsorControllerFactory()
        {

            //создаем контейнер читаем тэг Castle из web config
            container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));


            //пременная без определения выбираем из текущих сборок которые соответсвуют IController
            var controllerTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
                                  where typeof(IController).IsAssignableFrom(t)
                                  select t;
            //добавляем в контейнер выбранные контроллеры
            foreach (Type t in controllerTypes)
                container.AddComponentWithLifestyle(t.FullName, t, LifestyleType.Transient);


        }

        //перепоределяем метод GetCintrollerInstance 

        protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
        {
            return (IController)container.Resolve(controllerType);
        }
    }
}


вот сам контроллер

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
namespace WebUI.Controllers
{
    public class ProductsController : Controller
    {
        //
        // GET: /Products/
        private IProductRepository productsRepository;
    
        public  ProductsController(IProductRepository productsRepository)
       {
           //string connString = @"Server=.\SQLEXPRESS;Database=SportStore;Trusted_Connection = yes;";
            //запрашиваем реализацию интерфейса IProductRepository
           // productRepository = new SqlProductsRepository (connString); 
           
           this.productsRepository = productsRepository;
        }


        public ViewResult list() {

            
            return View(productsRepository.Products.ToList()); 
        }


    }
}

ругается на реализации фабрики контроллеров вот так

Could not resolve non-optional dependency for 'ProdsRepository' (DmainModel.Concrete.SqlProductsRepository). Parameter 'connectionString' type 'System.String'


я так понимаю он не видет параметр connectionstrin описанный в web.config но почему?
...
Рейтинг: 0 / 0
21.10.2011, 11:33:55
    #37491942
t0rch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с примером
bobsvt,

Не могу точно ответить на Ваш вопрос, но посмотрите на нашу реализацию фабрики контроллеров (IoC у нас Unity от Microsoft):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
public class UnityControllerFactory : DefaultControllerFactory
    {
        IUnityContainer _container;

        public UnityControllerFactory(IUnityContainer container)
        {
            _container = container;
        }

        protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
        {
            if (controllerType == null) controllerType = typeof(HomeController);

            if (controllerType == null)
                throw new ArgumentNullException("controllerType");

            if (!typeof(IController).IsAssignableFrom(controllerType))
                throw new ArgumentException(string.Format(
                "Type requested is not a controller: {0}", controllerType.Name),
                "controllerType");


            return _container.Resolve(controllerType) as IController;
        }
    }
...
Рейтинг: 0 / 0
21.10.2011, 11:49:01
    #37491998
ValGer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с примером
t0rch,

Посмотри здесь http://www.sql.ru/forum/actualthread.aspx?tid=828497&hl=valger - может чем-то поможет.
У меня в своё время тоже какая-то хрень с примером из Сандерсона возникала, но как-то её обошёл.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / помогите с примером / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]