2

MVC3、EF4.1、および C# を使用しています。

ジェネリック メソッドを使用して、多数のエンティティ タイプに存在するプロパティを更新しようとしています。したがって、 Type を引数としてメソッドに渡す必要があります。どうすればこれを行うことができますか?

いくつかのコード:

    public Boolean CompleteTask()
    {
        PRV myCurrentRecord = db.Task.OfType<PRV>().Single(r => r.Id == myId);
        myCurrentRecord.IsComplete = true;
        if (db.SaveChanges() > 0)
            return true;
        else return false;
    }

上記の例では、「PRV」は「ハードコード」されています。プロパティとして「IsComplete」を持つさまざまなタイプを渡したいと思います。

私は TPH 継承を使用していますが、親エンティティのみを使用できることに気付きました。

Parent.IsComplete

ただし、型をどのように渡すかを知りたいと思うでしょう。

ありがとう。

4

2 に答える 2

7

これには一般的な方法を使用できます。

public Boolean CompleteTask<TEntity>()
{
    TEntity myCurrentRecord = db.Task.OfType<TEntity>().Single(r => r.Id == myId);
    myCurrentRecord.IsComplete = true;
    if (db.SaveChanges() > 0)
        return true;
    else return false;
}

TEntityプロパティを持つ親タイプから派生することを確認するには、タイプ制約を追加する必要がありIsCompleteます。

public Boolean CompleteTask<TEntity>() where TEntity : ParentType
{
    ...
}
于 2013-09-17T12:36:33.507 に答える
-2

以下を試して、私に知らせてください

public Boolean CompleteTask(Type t)
{
    t myCurrentRecord = db.Task.OfType<t>().Single(r => r.Id == myId);
    myCurrentRecord.IsComplete = true;
    if (db.SaveChanges() > 0)
        return true;
    else return false;
}

これは、次のように呼び出すことができます。

CompleteTask(typeof(EFType));
于 2013-09-17T12:29:38.057 に答える