小编nic*_*hev的帖子

可空属性与Nullable局部变量

我对以下Nullable类型的行为感到困惑:

class TestClass {
    public int? value = 0;
}

TestClass test = new TestClass();
Run Code Online (Sandbox Code Playgroud)

现在,Nullable.GetUnderlyingType(test.value)返回基础Nullable类型,即int.但是,如果我尝试获得这样的字段类型

FieldInfo field = typeof(TestClass).GetFields(BindingFlags.Instance | BindingFlags.Public)[0];
Run Code Online (Sandbox Code Playgroud)

我援引

Nullable.GetUnderlyingType(field.FieldType).ToString()
Run Code Online (Sandbox Code Playgroud)

它返回一个System.Nullable[System.Int32]类型.因此,这意味着该方法Nullable.GetUnderlyingType()具有不同的行为,具体取决于您获取成员类型的方式.为什么会这样?如果我只是使用我test.value怎么能告诉它Nullable没有使用反射?

c# reflection nullable

6
推荐指数
2
解决办法
750
查看次数

在不知道其类型的情况下获取字典键值对

我有一个对象instance的哪些

instance.GetType().GetGenericTypeDefinition() == typeof(Dictionary<,>)
Run Code Online (Sandbox Code Playgroud)

是真的.我的问题是,如何在不真正了解其泛型类型的情况下从该对象中提取键值对?我想得到类似的东西KeyValuePair<object, object>[].请注意,我也知道字典在运行时使用的泛型类型(但不是编译时).我认为需要某种反思?

后续:是否有一种通用的机制来转换objectSomeClass<>(如果我知道这是正确的类型,当然)并因此使用它,因为类的实现不受泛型参数类型的影响?

c# reflection dictionary

6
推荐指数
2
解决办法
7691
查看次数

标签 统计

c# ×2

reflection ×2

dictionary ×1

nullable ×1