泛型类,如何在运行时设置类型?

2023-12-04

我创建了一个泛型类,但我知道运行时的类型,而不是设计中的类型,所以我想知道如何在运行时设置类型。

例如,我有:

public class MyGenericClass<T>
{
....
}

然后我尝试使用它。我在其他类中有一个方法,它消耗这个通用类。在此类的构造函数中,我接收所需的类型作为参数,因此我有一个类型属性,可在其中保存所需的类型。所以我正在尝试这个:

MyGenericClass<_typeNeeded> myClass = new MyGenericClass<typeNeeded>();

但这是行不通的。

如何在我创建的类中设置运行时的类型?

我正在使用 C# 4.0。

谢谢。 戴姆洛克。

编辑:我想做的是以下内容。我有一个类需要对数据库进行一些查询。这个查询总是返回相同的信息,一个类,但是包含这个类的信息来自不同的表。这是因为我需要确定要使用什么查询。为了决定使用什么查询,我使用收到的类型。

正是因为这个原因,我在设计时不知道类型,但在运行时知道。

我可以使用一个将由类实现的接口,并使用用正确的类实例化的接口,但这使我在实例化时有一个 switch 或 if ,这是我试图避免的,我想要更通用的东西。另外,如果我使用这个解决方案,在实例化的那一刻有一个 if,我可以创建泛型类,所以我只有一个类,并且它会更易于维护。


看看MakeGenericType方法。您可以使用它来创建一个Type实例(然后可用于创建该类型的实例),其通用参数值在运行时确定。但请注意,每当处理该对象的通用特征时,您都需要更多的反思;您不能在类型为带有变量类型参数的泛型类型的代码中创建变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

泛型类,如何在运行时设置类型? 的相关文章

  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 不能从静态上下文中引用非静态方法(方法名())。为什么?

    我对此真的很困惑 我有2节课 Club and 会员资格 在会员资格中我有方法 获取月份 在俱乐部我有加入月份 它采用参数 月份 因此用户输入月份 然后我希望它返回在该特定月份加入的会员资格 我试图从类 Club 中调用 getMonth
  • 方法“getElementsByClassName”无法识别

    我想启动 Windows 资源管理器并登录网站 登录后我想单击注销文本链接 但我收到此错误 Method invocation failed because mshtml HTMLDocumentClass doesn t contain
  • 两个相同的文件根据 C# 的编写方式具有不同的文件大小

    我正在尝试将对象数组序列化为 JSON 格式写入文件 我正在尝试以两种不同的方式编写它 如下所示 ToSerialise Obj new ToSerialise 10 for int i 0 i lt 10 i Obj i new ToSe
  • Django 在文件末尾添加一些奇怪的字符

    当我将文件提交到 django 服务器并且文件名存在于目录中时 我遇到了问题 Django 不会覆盖该文件 但会在名称末尾添加一些字符 我怎样才能添加字符而不是 Django 我的 model py 看起来像这样 class UpLoadF
  • 使用 ggplot2 绘制不同长度的向量

    我有 8 个不同长度的数据向量 MAP 分数 评级的文档数量不同 从 80 到 500 如何将它们读入 R 并在 ggplot2 中将它们绘制为相同的长度 将它们视为从 0 到 1 范围内的不同数量的数据点 它们应该按比例缩小 放大 以便它
  • OCaml 中函数以相反顺序返回列表

    我想从文件中读取一些数字 将它们放入列表中 最后将它们显示在屏幕上 Numbers txt 目前有2 3 5 7 11但是作为输出我得到11 7 5 3 2 unit 为什么会发生这种情况 let rec int list from sb
  • Google App Engine 上的并发请求处理

    我正在几个平台上尝试并发请求处理 该实验的目的是有一个broad衡量某些选定技术的能力界限 我在我的机器上设置了一个 Linux 虚拟机 其中包含一个基本的 Go http 服务器 vanillahttp HandleFunc of the
  • 如何在Linux下不使用QProcess执行shell命令?

    我正在尝试从 Qt 应用程序中读取屏幕分辨率 但不使用 GUI 模块 所以我尝试使用 xrandr grep awk print 1 命令通过QProcess 但它显示警告并且不给出任何输出 unknown escape sequence
  • suds.TypeNotFound:未找到类型:“MerchantCode”

    我正在使用 django 开发一个网络 它处理 wsdl 我有一个处理它的示例代码 但它是用 PHP 编写的 我想将它转换为 python 以用于我的 django 这是 PHP 文件
  • Android 使新的异步任务在后台或 Dropbox Core API 问题中优先于其他任务

    我正在使用 Android 中的核心 API 从 Dropbox 加载多张照片 并在发出请求时对它们进行序列化 我正在将缩略图显示在网格视图中 当用户单击其中一个缩略图时 它会转到另一个活动 它会从服务器获取完整的分辨率版本 它做得很好 但
  • 如何在 Foundry 中解析大型压缩 csv 文件?

    我有一个大型 gzip 压缩 csv 文件 csv gz 上传到一个数据集 该数据集大小约为 14GB 未压缩时为 40GB 有没有一种方法可以使用 Python Transforms 解压缩 读取并将其写入数据集 而不会导致执行器 OOM
  • Pandas:使用 groupby 和函数进行数据帧过滤

    使用Python 3 3和Pandas 0 10 我有一个通过连接多个 CSV 文件构建的 DataFrame 首先 我过滤掉 名称 列中包含特定字符串的所有值 结果看起来像这样 为了简洁起见缩短了 实际上还有更多列 Name ID A 1
  • 批处理菜单轮廓和设计[重复]

    这个问题在这里已经有答案了 不久前 我在谷歌上搜索如何制作具有更 专业外观 的批处理菜单 而不是使用以下符号 批量制作菜单周围的轮廓 但我没有运气 今天无意间发现了这篇文章 https web archive org web 2015120
  • 尝试设置 Spring Servlet 时出现“WARN org.springframework.web.servlet.PageNotFound - 未找到带有 URI 的 HTTP 请求的映射...”

    我正在尝试设置一个 Spring MVC 项目 我添加了一个调度程序 servlet 一个 jsp 并设置了 web xml 文件 但我不断得到 警告 org springframework web servlet PageNotFound
  • 使用 2 级嵌套数组将数据帧转换为 JSON

    我对 Python 编程有点陌生 我有一个小要求 我需要以 JSON 格式列出给定两周内的所有客户及其金额 目前 我有一个这样的数据框 FortNight Amount Customer Parameter Apr 2FN 2018 339
  • 微软Power BI连接mysql

    我的mysql服务器在云端 我安装连接器来连接mysqlWindow 7机器 然后我尝试从 Power BI 连接到 MySQL 服务器 我提供了 IP 地址和数据库名称以及我的 root 凭据 然后我点击保存 它给了我以下错误 DataS
  • Shinydashboard - 根据所选选项卡更改背景

    我正在使用 Shinydashboard 包创建一个仪表板 我需要根据所选选项卡更改背景颜色 我已经尝试过以下代码 但它没有按预期工作 library shiny library shinydashboard library dplyr u
  • G1GC 备注阶段花费的时间太长

    我的服务器应用程序在负载下有时会无响应 我发现问题与很长的 GC Remark 有关 没有实施垃圾收集调整 我的测试服务器是 4 核 8 GB 8 GB 交换服务器 这是 gc 日志输出的日志 2014 04 06T04 39 58 426
  • Inno Setup 卸载程序版本信息

    我使用 Inno Setup 作为我的安装程序 我里面的 VersionInfo 有问题unins000 exe 为了在安装程序中填充 VersionInfo 我使用了指令AppPublisher AppCopyright等等 但它不影响安
  • 泛型类,如何在运行时设置类型?

    我创建了一个泛型类 但我知道运行时的类型 而不是设计中的类型 所以我想知道如何在运行时设置类型 例如 我有 public class MyGenericClass