SeparatedObjectFactory
- It is used to create objects that do not derive from MonoBehaviour. When inheriting this class, the objects and parameters to be created must be defined as types. 
Sample uses:
public class Installer : GameObjectInstaller
{
    public override void Install(DIContainer container)
    {
        container.BindFactory<FooItem.Factory>();
        container.BindFactory<FooItemWithoutParam.Factory>();
    }
}
public class SampleClass : MonoInjecter
{
    [Inject]
    private readonly FooItem.Factory _fooItemFactory;
    
    [Inject]
    private readonly FooItemWithoutParam.Factory _fooItemWithoutParamFactory;
    protected override void Awake()
    {
        base.Awake();
        FooItem fooItem = _fooItemFactory.Create(26);
        FooItemWithoutParam fooItemWithoutParam = _fooItemWithoutParamFactory.Create();
    }
}
public class FooItem : IFactorable<int>
{
    private readonly Foo _foo;
    public FooItem(Foo foo)
    {
        _foo = foo;
    }
    public void InitializeFactory(int variable)
    {
        Debug.Log($"{_foo.index}: int variable is: {variable}");
    }
    public class Factory : SeparatedObjectFactory<FooItem, int> { }
}
public class FooItemWithoutParam : IFactorable
{
    private readonly Foo _foo;
    public FooItemWithoutParam(Foo foo)
    {
        _foo = foo;
    }
    public class Factory : SeparatedObjectFactory<FooItemWithoutParam> { }
}Last updated