0

着信オブジェクト タイプ (この場合はエンティティ) に基づいて整数パラメーターを返そうとしていますが、形式が不明です。何か助けてください。

entity.ID = db.Create(
                    entity.Name,
                    entity.Description,
                    entity.InitialStep != null ? (int?)entity.InitialStep.ID : null,
                    entity.IsPrivate,
                    entity.AllowOnBehalfSubmission,
                    new Func<int>{something needs to happen here and return an integer});
4

2 に答える 2

0

いくつかの方法で int を返す関数を指定できます。

1) 既存のメソッドを指定する

    private int MethodReturningInt() { return 1; }

    db.Create( /* ... */
             MethodReturningInt);  // note: no () !

2) デリゲートを使用する (匿名メソッド)

    db.Create( /* ... */
      delegate() { return 1; });

3) ラムダ式を使用する

    db.Create(/* ... */
      () => 1);

ここで、戻り値 (1) を必要に応じて調整する必要があります...

于 2012-11-12T11:50:14.240 に答える
0

呼び出そうとしているラムダ関数は、定義と同じコンテキストで実行する必要があります。私の理解では、オブジェクト (エンティティ) にはいくつかのタイプがあり、オブジェクトのタイプに基づいてパラメーター値を設定したいですか? その場合は、次の行に沿ってコードを変更します。

entity.ID = db.Create(
    entity.Name,
    entity.Description,
    entity.InitialStep != null ? (int?)entity.InitialStep.ID : null,
    entity.IsPrivate,
    entity.AllowOnBehalfSubmission,
    new Func<Type, int?> (type => 
    {
        if (type == typeof(SomeType))
            return 1;
        if (type == typeof(AnotherType))
            return 2;
        return null;
    })(entity.GetType())
);
于 2012-11-12T11:58:44.097 に答える