0

この構造マップ構成と、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()}

何故かはわからない。

4

1 に答える 1