我得到的错误:WCF Ninject Ninject.ActivationException
Error activating IRule using binding from IRule to Crazy
A cyclical dependency was detected between the constructors of two services.
我multpiple规则是我的 “WCF服务” 的规则实现接口的iRule:
public interface IRule
{
warior ExecuteRule(warrior _warrior);
}
例如规则疯狂的外观像这样:
public class Crazy : IRule
{
private readonly IRule _rule;
public Crazy(IRule rule)
{
_rule = rule;
}
public wariors ExecuteRule(warriors _warriors)
{
using (var context = new warriors_officialEntities())
{
_warriors = context.warriors.SingleOrDefault(x => x.Name == _warriors.Name);
_warriors.cursed = (_warriors.Sleep > 70 && _warriors.Hunger > 70);
context.SaveChanges();
}
return _warriors;
}
}
我还使用一个ninject模块我把它称为RuleFactory。 我将一个IRule绑定到每个规则类并给他们一个名字。
public class RuleFactory : NinjectModule
{
public override void Load()
{
Bind<IRule>().To<Crazy>().Named("crazy");
Bind<IRule>().To<Hungry>().Named("hunger");
Bind<IRule>().To<Munchies>().Named("munchies");
Bind<IRule>().To<Sleepy>().Named("sleepys");
}
}
当我获取所有从我的服务wariors是火的方法称为DoRules(),此方法将环槽的所有战士和试图执行每一个规则为他们。
IKernel _rules = new StandardKernel(new RuleFactory());
public void DoRule(List<warriors> tmgs)
{
IEnumerable<IRule> rules = _rules.GetAll<IRule>();
using (var context = new warriors_officialEntities())
{
foreach (warriors tmg in tmgs)
{
foreach (var rule in rules)
{
rule.ExecuteRule(tmg);
}
tmg.LastAccess = DateTime.Now;
context.Entry(tmg).State = EntityState.Modified;
}
context.SaveChanges();
}
}
的代码将在foreach (var rule in rules)
给出一个例外任何想法如何解决这一问题?
工作!我没有看到,谢谢! – Ferryzijl