4

単体テスト用のオブジェクトを簡単に作成できるように、オブジェクトビルダーを作成しようとしています。Func <>を渡すことができるように、With()メソッドを作成したいと思います。これにより、正しいプロパティが設定されます。

これが私がこれまでに持っているものです:

public class EquipmentModelBuilder
{

    public EquipmentModel Object { get; set; }

    public EquipmentModelBuilder()
    {
        Object = new EquipmentModel();
    }

    public EquipmentModelBuilder WithCategory(int categoryId)
    {
        Object.EquipmentCategoryID = categoryId;
        return this;
    }

    public EquipmentModelBuilder With(Func<EquipmentModel> setter)
    {
        Object = setter.Invoke();
        return this;
    }

    public EquipmentModel Build()
    {
        return Object;
    }
}

もちろん、WithCategory()は機能しますが、各プロパティのすべてのメソッドを作成する必要はありません。次のことができるようにしたいと思います。

EquipmentModelBuilder.With(x => x.Property1 = 1).With(x => x.Property2 = "2").Build()

私が間違っていることについて何か考えはありますか?

4

2 に答える 2

3

Action<EquipmentModel>ではなく を引数として使用する必要がありますFunc<EquipmentModel>

public EquipmentModelBuilder With(Action<EquipmentModel> setter)
{
    setter.Invoke(this.Object);
    return this;
}
于 2011-03-17T15:22:31.113 に答える
1

Func<EquipmentModel>EquipmentModel を返す関数を指定していると思いますので、必要なAction<EquipmentModel>のは、EquipmentModel をパラメーターとして受け取る戻り値のない関数を指定する です。

于 2011-03-17T15:24:07.740 に答える