この構造マップ構成と、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()}
何故かはわからない。