c# - 给定一个通用 <E> 如何创建一个新的 E 并返回它?

标签 c# reflection entity-framework-4

此代码返回一组可变字段,我想返回一个强类型 <E> :

public IList<E> Get(Expression<Func<E, object>> selectLambda == null)
{
    if (selectLambda == null)
        selectLambda = p => p;
    var partialSet = DC.CreateQuery<E>("[" + typeof(E).Name + "]");
    foreach ( var record in partialSet)
    {
        var tempEntity = new E();  // This is the error
        MapIt( record, tempContract);
        result.Add(tempContract);
    }
    return result;
}

最佳答案

最简单的方法是添加约束:

public IList<E> Get(Expression<Func<E, object>> selectLambda == null)
    where E : new()

然后您的其余代码将编译 :)

如果你不能在那里使用约束(例如因为它们会传播到所有地方)但你碰巧知道它会在执行时起作用,你可以使用:

var tempEntity = Activator.CreateInstance<E>();

关于c# - 给定一个通用 <E> 如何创建一个新的 E 并返回它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4044335/

相关文章:

javascript - 在 Angular 中调用 $post 时如何使用 MVC 重定向

c# - 如何确定对象类型是否为内置系统类型

.net - 使用更新的值在 Entity Framework 上下文中重新加载对象

entity-framework - Entity Framework - 相关的 ICollection 被物化为 HashSet

entity-framework-4 - 如何让 EFProf 和 EFProviderWrapper 在 Entity Framework 连接中一起工作

c# - 当托管在 Azure 应用服务中时,如何控制添加到 ASP.NET Core Web 应用程序的 HTTP 响应 header ?

c# - LINQ 中的动态位置

c# - 在 C# 中检测您的操作系统上安装了哪个版本的 IE?

C# 使用反射创建 AutoMapper 映射

c# - 如何使用反射调用泛型方法?