相关疑难解决方法(0)

使用Decorator模式进行Ninject依赖注入

说,我有这样的类层次结构:

public interface IRepository { }

public class SomeSimpleRepository : IRepository {}
Run Code Online (Sandbox Code Playgroud)

现在我想用其他函数"装饰"SomeSimpleRepository

public class MoreAdvancedRespository : IRepository 
{ 
    private readonly IRepository _originalRepository;

    public MoreAdvancedRespository(IRepository original) 
    { }
}
Run Code Online (Sandbox Code Playgroud)

过了一会又一个......

public class TrickyRepository : IRepository
{
    private readonly IRepository _originalRepository;

    public TrickyRepository (IRepository original) 
    { }
}
Run Code Online (Sandbox Code Playgroud)

现在,我需要完成绑定.在应用程序中,我需要使用MoreAdvancedRespository初始化TrickyRepository的实例.所以,我需要写一些类似的东西:

Bind<IRepository>().To<TrickyRepository>.With ??
Run Code Online (Sandbox Code Playgroud)

在这里我很困惑,我需要以某种方式说,采取MoreAdvancedRespository,但用SomeSimpleRepository初始化它.这是一种依赖关系链,必须针对一个接口进行解析.

有没有人对此提出建议?

.net ninject decorator inversion-of-control

31
推荐指数
1
解决办法
5153
查看次数

通用存储库和事务

我在MVC应用程序中实现了我的第一个Generic存储库.工作正常,但如何将存储库放在事务范围?

 public interface IRepository<TEntity> where TEntity : class
    {
        List<TEntity> FetchAll();
        IQueryable<TEntity> Query { get; }
        void Add(TEntity entity);
        void Delete(TEntity entity);
        void Save();
    }


    public class Repository<T> : IRepository<T> where T : class
    {
        private readonly DataContext _db;

        public Repository(DataContext db)
        {
            _db = db;
        }

        #region IRepository<T> Members

        public IQueryable<T> Query
        {
            get { return _db.GetTable<T>(); }
        }

        public List<T> FetchAll()
        {
            return Query.ToList();
        }

        public void Add(T entity)
        {
            _db.GetTable<T>().InsertOnSubmit(entity);
        }

        public void Delete(T entity)
        {
            _db.GetTable<T>().DeleteOnSubmit(entity); …
Run Code Online (Sandbox Code Playgroud)

c# transactions repository asp.net-mvc-3

6
推荐指数
1
解决办法
6149
查看次数

SimpleInjector RegisterDecorator方法的Ninject等效项

我在Simple Injector IoC容器中有以下代码:

container.RegisterDecorator(typeof(ICommandHandler<>),
    typeof(ValidationCommandHandlerDecorator<>));
Run Code Online (Sandbox Code Playgroud)

我需要把它翻译成Ninject等价物.我已经读过Ninject中的Decorator模式是通过这个WhenInjectedInto方法完成的,但整个biding需要像这里的3个参数:

Bind<IRepository>().To<SimpleRepository>
    .WhenInjectedInto<AdvancedRespository>();
Run Code Online (Sandbox Code Playgroud)

Simple Injector中的这个方法只需要2,所以你能告诉我,我在这里缺少什么吗?

c# ninject simple-injector

5
推荐指数
1
解决办法
639
查看次数

这类服务应该注入基类吗?(与静态课程相比)

我想知道..如果我有像ILoggingService,IMailerService,ICacheService这样的服务.这些都是基础设施的一部分.但是,您是将它们作为静态类还是将它们注入基类中,以便所有派生类都可以作为单例访问它们?你怎么处理它们?

inversion-of-control asp.net-mvc-3

2
推荐指数
1
解决办法
118
查看次数