Основная информация о Ninject требуется, пожалуйста - PullRequest
0 голосов
/ 11 сентября 2010

Я медленно изучал основы программирования, управляемого интерфейсом, и изо всех сил стараюсь обдумать несколько принципов, касающихся инверсии управления, в частности, с помощью Ninject.

Допустим, у меня есть конкретная моделькласс следующим образом ...

 public sealed class Host : EntityAuditable<Host, Guid>

У меня есть базовый класс, который определяет методы для модели, как это ....

public abstract class EntityAuditable<T, TKey> : 
    IEntity, 
    IDisposable, 
    IComparable<EntityAuditable<T, TKey>> 
    where T : EntityAuditable<T, TKey>, new()

IEntity - очень простой интерфейс, который определяетсвойство объекта 'Id'.

Теперь конструктор для моего класса Host будет выглядеть следующим образом ....

public Host(IService<Host> service)
{
    this.service = service;
    this.id = Guid.NewGuid();
}

Где реализация IService предоставляет методы для сохранения объектов в репозитории, специфичном длясервис.

Я хотел бы предоставить некоторые статические методы в своем базовом классе, чтобы я мог написать код, подобный

Host.LoadAll(); 

, и знать, что мои привязки будут введены правильно.Моя реализация в базовом классе была бы похожа на это ...

   public static IList<T> LoadAll()
    {
        T instance = new T();
        List<T> instances = new List<T>(instance.DataSelectAll());
        // Clean up the instance.
        instance.Dispose();
        return instances;
    }

Возможно ли это, или я делаю что-то в корне неправильно?

Работает ли Ninject так, как ему известноон должен вызывать мой параметризованный конструктор, когда я вызываю new T ()?

Примеры, которые я нашел в документации (что, к сожалению, устарело), ​​используют ядро ​​для создания объекта, но я не хочучтобы ядро ​​создавало код в моих моделях.

Я бы делал все свои привязки в моем файле Global.ascx.

1 Ответ

1 голос
/ 14 сентября 2010

В ответ на мой вопрос выясняется, что мой подход был неверным.

Отказ от статических методов и использование моих контроллеров mvc для бизнес-логики привели к гораздо лучшему разделению, а также к более чистому и удобному в обслуживании коду. Тогда связать все с помощью ninject было гораздо проще.

...