小编Kev*_*Fee的帖子

通过Activator.CreateInstance创建可为空的对象返回null

我正在创建一个将小脚本变成dll的系统.当我尝试获取可为空的值类并将其设置为参数的默认值时,我遇到了问题.问题是我需要在编译器中创建一个用户选择为nullable的实例,并将其设置为常量.

不幸的是,每当我使用Activator.CreateInstance(NullableType)(其中NullableType是来自用户输入的创建类型)时,我得到null返回值.例如,只需执行:

object Test = Activator.CreateInstance(typeof(Nullable<int>));
Console.WriteLine(Test == null);
Run Code Online (Sandbox Code Playgroud)

返回true.这与Nullables发生.在C#中创建的结构,甚至是通用结构,都可以很好地创建.哎呀,如果我从DotNetReflector复制并粘贴nullable(并删除TypeDependencyAttribute,TargetPatchingOptOutAttribute和ThrowHelper调用,因为我没有访问权限),它会在上面显示False.

到底是怎么回事?当我在运行时之前不知道通用参数时,还有其他可能的方法来创建可空吗?

c# reflection

7
推荐指数
2
解决办法
3608
查看次数

标签 统计

c# ×1

reflection ×1