Как работает спящий режим Windows 10?

Такие конструкции следует избегать, когда это возможно. Поэтому спросите себя: действительно ли этот параметр необходим как аргумент конструктора? Или может SomeObject быть заменен на безгосударственный, который повторно используется всеми, кто зависит от него, передавая параметр методу, который вы выполняете на объекте?

, например. Вместо

public class SomeObject
{
    private float someValue
    public SomeObject(IService service, float someValue)
    {
        this.someValue = someValue
    }

    public float Do(float x)
    {
        return this.Service.Get(this.someValue) * x;
    }
}

используйте

public class SomeObject
{
    public SomeObject(IService service)
    {
    }

    public float Do(float x, float someValue)
    {
        return this.Service.Get(someValue) * x;
    }
}

Если требуется, пошли за фабрикой:

public interface ISomeObjectFactory
{
    ISomeObject CreateSomeObject(float someValue);
}

public class SomeObjectFactory : ISomeObjectFactory
{
    private IKernel kernel;
    public SomeObjectFactory(IKernel kernel) 
    {
        this.Kernel = kernel;
    }

    public ISomeObject Create(float someValue)
    {
        return this.kernel.Get<ISomeObject>(WithConstructorArgument("someValue", someValue);
    }
}

Preview: Ninject 2,4 won 't требуется реализация, но разрешить

kernel.Bind<ISomeObjectFactory>().ToFactory();  // or maybe .AsFactory();
0
задан CRE 18 March 2019 в 14:35
поделиться