1

如何使用 zenject 创建具有多个参数重载的 Create 方法的工厂(或如何以不同的方式解决此问题)?

我希望能够

var x = factory.Create("bla bla");//string
x = factory.Create();//parameterless
x = factory.Create(1);//int
x = factory.Create(1,2);//int,int
x = factory.Create("bla bla",2);//string,int
4

1 回答 1

1

一种方法是创建一个包含最大参数数量的工厂,然后提供额外的方法,这些方法使用缺失值的默认值,如下所示:

public class Foo
{
    [Inject]
    public string Value1;

    [Inject]
    public int Value2;

    public class Factory : Factory<string, int, Foo>
    {
        public Foo Create(string value1)
        {
            return Create(value1, 0);
        }

        public Foo Create()
        {
            return Create("default");
        }
    }
}
于 2017-08-12T07:58:14.797 回答