2

I'm using Structuremap as IOC container.

In old version of Structremap I used ObjectFactory, now I have updated to Structremap.Mvc5 from below link:

https://github.com/webadvanced/Structuremap.MVC5

But I can't create an instance of 'ISettingService' in my BuildRegistration method.

My SettingConvention class is:

public class SettingsConvention : IRegistrationConvention
{
    static readonly MethodInfo BuildMethod = typeof(SettingsConvention).GetMethod(
    "BuildRegistration",
    BindingFlags.Static | BindingFlags.NonPublic);

    static ISettings BuildRegistration<TSettings>() where TSettings : ISettings, new()
    {
        // It's work in old version but now It's not working
        // How I should create an Instance Here...
        // var settingService = ObjectFactory.Resolve<ISettingService>();

        return settingService.LoadSetting<TSettings>();
    }

    public void ScanTypes(TypeSet types, StructureMap.Registry registry)
    {
        // Only work on concrete types
        types.FindTypes(TypeClassification.Concretes | TypeClassification.Closed).ForEach(type =>
        {
            // Register against all the interfaces implemented
            // by this concrete class
            type.GetInterfaces().ForEach(@interface =>
            {
                if (type.CanBeCastTo(typeof(ISettings)) && typeof(ISettings).IsAssignableFrom(type))
                {
                    var buildMethod = BuildMethod.MakeGenericMethod(type);

                    registry.For(type).Use(buildMethod.Invoke(null, null));
                }
            });
        });
    }
}

How can I create an instance of 'ISettingService' instead of writing 'ObjectFactory.Resolve()' ?

Thanks everyone for taking the time to try and help explain.

Saeid Mirzaei
  • 950
  • 2
  • 18
  • 48

0 Answers0