如何在C#中设置运行时类型TSomething?

时间:2010-01-26 22:37:46

标签: c# entity-framework wcf-ria-services

我正在编写一个带参数的函数,该参数需要一个TEntity类型。我希望能够在运行时传递一个特定的类型,但我无法编译它:

public LoadOperation LoadQuery(EntityQuery<???> query)
        {
            LoadOperation loadOperation = DomainContext.Load(query,LoadBehavior.MergeIntoCurrent, false);
            return loadOperation;
        }

不会编译的代码如下所示:

EntityQuery<Person> q = DomainContext.GetPerson();
LoadQuery(q);

我尝试了不同的工作来完成这项工作,但我不知所措。我需要做什么?

1 个答案:

答案 0 :(得分:7)

取决于您的DomainContext.Load()函数的样子:

public LoadOperation LoadQuery<T>(EntityQuery<T> query)
{
    LoadOperation loadOperation = DomainContext.Load(query,LoadBehavior.MergeIntoCurrent, false);
    return loadOperation;
}

然后仍然像以前一样使用它:

EntityQuery<Person> q = DomainContext.GetPerson();
LoadQuery(q);

类型系统应该从参数中推断出你的函数的LoadQuery<Person>()版本。

不幸的是,我怀疑这也意味着对上述Load()函数进行了一些修改。