使用类型变量进行转换

用户名

下面的代码不起作用,我想知道如何将实例动态转换为在运行时确定的类型?

Convert.ChangeType()返回仍需要强制转换的Object。调用Invoke(),GetConstructor()或Activator.CreateInstance()的所有尝试也是如此,请参见下文。在某些时候,我需要显式地强制转换代码,我希望避免它或将其尽可能地推出。

Type type = Type.GetType ("RandomChildClass");
Object obj = Activator.CreateInstance (type, new Object[]{ "argument" });
var instance = (type)obj;

我知道我可以创建一个接受<T>的方法,但是仍然会有一个不知道如何使用动态随机类型调用它的问题,即使用Type变量强制转换变量

用户名

无法使用Type 来确定表达式类型(泛型类型参数与值不同,因为它们被编码到类型系统中。)

变量的值来自运行时代码执行,而表达式类型是编译时构造。不用说,编译是在代码运行之前发生的,因此不可能使用变量进行强制转换。

反射(有点笨拙)或dynamic(基本上更容易使用反射)允许调用任意方法或针对通用对象类型的表达式访问属性/字段-有时称为“后期绑定”。但是,在其上调用操作的表达式类型仍然是对象。

接口可用于统一不同的类实现,以进行正确的静态类型化。然后,新创建的对象可以强制转换为适用的接口。就像其他表达式一样,类型是编译时构造(因此必须直接指定接口),但是代码现在不受特定类的限制。

如果创建的系统可以直接在静态类型(C#)代码中使用这些“动态类”,并且可以保证接口或将接口限制在较小的范围内,那么使用接口可能是最干净的方法:例如var myAction = (IMyAction)obj否则,请退回动态访问-直接或直接进入立面。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用对象进行类型转换

来自分类Dev

使用变量进行快速转换

来自分类Dev

使用类型参数进行类型转换

来自分类Dev

使用float_of_int进行类型转换

来自分类Dev

使用Type类型的参数进行转换

来自分类Dev

使用类型为Type的参数进行转换

来自分类Dev

使用float_of_int进行类型转换

来自分类Dev

使用C语言进行类型转换

来自分类Dev

在 C 中使用指针进行类型转换

来自分类Dev

使用JuMP时如何转换变量的类型

来自分类Dev

使用不同的变量类型进行计算

来自分类Dev

c:更改变量类型而不进行强制转换

来自分类Dev

使用 asInstanceOf Scala 进行类型转换后类型错误

来自分类Dev

当变量已经定义了类型时,为什么必须进行类型转换?

来自分类Dev

为什么NULL需要使用块进行类型转换?

来自分类Dev

使用宏进行不兼容的参数类型转换

来自分类Dev

使用Logstash Grok进行数据类型转换

来自分类Dev

使用Type类进行动态类型转换

来自分类Dev

使用C进行类型转换-整数和字符*

来自分类Dev

使用嵌套数据结构时进行类型转换

来自分类Dev

在 Java 8 中使用 map 函数无法进行类型转换

来自分类Dev

如何(临时)使用 natvis 对 CPtrList 条目进行类型转换?

来自分类Dev

使用存储在变量中的类名称的Ruby动态“类型转换”

来自分类Dev

使用变量类型进行C#投/拆箱

来自分类Dev

Java:您可以使用变量进行转换吗?

来自分类Dev

使用变量转换器对RxJS进行观测-Angular

来自分类Dev

Java:您可以使用变量进行转换吗?

来自分类Dev

使用 mutate_at 对多个变量进行 Boxcox 转换

来自分类Dev

动态变量在不进行类型转换的情况下不接受继承的属性

Related 相关文章

热门标签

归档