繁体   English   中英

从配置转换为类型

[英]Cast to Type from Config

给定一个将某些ID映射为类型的字典:

Dictionary<int, Type> processIdToTypeMapping

我正在尝试遍历字典并将对象转换为字典中指定的类型。 该对象来自MSMQ。

这是我迭代字典的方式:

foreach (KeyValuePair<int, Type> processIdToType in processIdToTypeMapping)

我尝试使用泛型:

private void CreateObject<T>()
{
    FooBase fooBase = message.Body as T;
}

但这需要在编译时知道类型。 我不能这样调用CreateObject():

CreateObject<typeof(processIdToType.Value)>();  // That can't work.

我尝试使用ChangeType():

private void CreateObject(Type fooType)
{
    FooBase fooBase = Convert.ChangeType(message.Body, fooType);
}

但是我收到一个编译时错误,它无法转换。

我尝试

private void CreateObject(Type fooType)
{
    FooBase fooBase = message.Body as typeof(fooType);
}

如何将message.Body转换为字典中的类型?

从注释中,您仅尝试进行动态类型检查,因此幸运的是,不需要动态转换。

if(message.Body != null && message.Body.GetType() == fooType) ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM