我有 fluentScheduler 的这个结构图配置和 ITaskFactory。
public class StructureMapRegistry : Registry
{
public StructureMapRegistry()
{
Scan(x =>
{
x.AssembliesFromApplicationBaseDirectory();
x.WithDefaultConventions();
});
//implementace daného rozhraní naplní stejně jmenující se třídou.
For<IPlayerService>().Use<PlayerService>().Singleton();
For<IWorldService>().Use<WorldService>().Singleton();
For<IQuestService>().Use<QuestService>().Singleton();
For<IHeroesService>().Use<HeroesService>().Singleton();
For<ISaveChangesService>().Use<SaveChangesService>().Singleton();
For<IAddHeroesQuests>().Use<AddHeroesQuests>().Singleton();
IncludeRegistry(new IoC());
}
}
public class StructureMapTaskFactory : ITaskFactory
{
public ITask GetTaskInstance<T>() where T : ITask
{
return ObjectFactory.Container.GetInstance<T>();
}
}
我得到了这个例外。
{StructureMap.StructureMapConfigurationException:没有注册默认实例,无法自动确定类型“TheGame.Tasks.IAddHeroesQuests”
没有为 TheGame.Tasks.IAddHeroesQuests 指定配置
1.) Container.GetInstance(TheGame.Tasks.IAddHeroesQuests)
v StructureMap.SessionCache.GetDefault(Type pluginType, IPipelineGraph pipelineGraph) vc:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\SessionCache.cs:řádek 63
v StructureMap.BuildSession.GetInstance(Type pluginType) vc:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\BuildSession.cs:řádek 60
v StructureMap.Container.GetInstance(Type pluginType) vc:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\Container.cs:řádek 336
v StructureMap.Container.GetInstance[T]() vc:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\Container.cs:řádek 201
v TheGame.StructureMapTaskFactory.GetTaskInstance[T]() vd:\Programovani\VisualStudio\Testy\TheGame\thegame\TheGame\Global.asax.cs:řádek 101
v FluentScheduler.Registry.b__2[T]() vc:\TeamCity\buildAgent\work\21c2d4ee90f3f489\FluentScheduler\Registry.cs:řádek 50
v System.Threading.Tasks.Task.InnerInvoke()
v System.Threading.Tasks.Task.Execute()}
我不知道为什么。