c# - 使泛型成为变量

标签 c# generics

var type = data.ClientBaseObject.GetType();
var newClientObject = GetDataContextedObject(type, data.ClientBaseObject);


private object GetDataContextedObject(Type type, object jobObject)
    {
        switch (type.Name.ToUpper())
        {
            case "JOBNUMBER":
                {
                    return GetObjectFromDataContext<JobNumber>(jobObject);
                }
            case "NA_HEADER":
                {
                    return GetObjectFromDataContext<NA_Header>(jobObject);
                }
        }
        return null;
    }

        private  object GetObjectFromDataContext<T>(object jobObject) where T: class, IJobID
        {
            var newObject = jobObject as T;
            return _dc.GetTable<T>().FirstOrDefault(j => j.JobID == newObject.JobID);
        }

在上面的代码中,我想知道是否有办法让 GetObjectFromDataContext进入GetObjectFromDataContext<type> ,而不必为每个类获取 type.Name 并为每个类创建一个案例。这能做到吗?

如果问题不清楚,请告诉我。

最佳答案

可以这样写:

private object GetDataContextedObject<T>(object jobObject)
{
    return GetObjectFromDataContext<T>(jobObject);
}

关于c# - 使泛型成为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15259344/

相关文章:

generics - 是否可以在when语句中返回与类型参数相同的类型

Java 泛型 : Type mismatch: cannot convert from Integer to K

java - 将通用数组列表添加到数组列表

c# - 使用 MySQL 数据填充 ArrayList

c# - 在 C# 中从 resx 文件名中提取文化信息的最有效方法是什么?

C#:用于 Url 验证的 RegEx

C11 _Generic c 程序和 Eclipse c/c++ 上的错误

c++ - 如何创建用于 QML 的通用对象模型?

C# 将任何方法作为参数传递

c# - Roland Pheasant 使用 DynamicData 实现尾部方法