通用参数

时间:2013-10-13 13:03:49

标签: c# entity-framework

我有四个具有类似结构的EF类和一个包含EF结构和其他一些道具和方法的泛型类,并且想要将泛型方法编写为通用的{{1 }}

EF

我的问题:如何创建 T型的新实例或获取 T 的类型

2 个答案:

答案 0 :(得分:2)

您需要在T:

上添加约束
private List<T> CastGenericToEF<T>(List<GenericClass> GenericList) where T : new()

然后,您可以使用new T()

创建T的实例

要获取T的类型,只需使用typeof(T)

答案 1 :(得分:1)

你必须定义T可以有new()

private List<T> CastGenericToEF<T>(List<GenericClass> GenericList) where T: new()
{
    List<T> Target = new List<T>();
    foreach (var generic in GenericList)
    {
        //How can I do to create an Instance of T?
        var tInstance = new T();
        // Some proccess here 
        var typeOf = typeof(T);

    }
    return Target;
}

要访问T的属性/方法,您必须以某种方式指定它的类型。没有规范,T可以是任何东西......

以下示例在某处定义了一个接口,然后指定T必须实际实现该接口。如果你这样做

    interface IGenericClass
    {
        void SomeMethod();
    }

您可以访问界面

定义的属性或方法
    private List<T> CastGenericToEF<T>(List<GenericClass> GenericList) where T : IGenericClass, new()
    {
        List<T> Target = new List<T>();
        foreach (var generic in GenericList)
        {
            //How can I do to create an Instance of T?
            var tInstance = new T();
            tInstance.SomeMethod();
            // Some proccess here 
            var typeOf = typeof(T);

        }
        return Target;
    }