powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / помогите с примером
3 сообщений из 3, страница 1 из 1
помогите с примером
    #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
помогите с примером
    #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
помогите с примером
    #37491998
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t0rch,

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


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