0

给定一个将某些 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 转换为字典中的类型?

4

1 回答 1

1

从评论中,您只是尝试进行动态类型检查,所以幸运的是,不需要动态转换。

if(message.Body != null && message.Body.GetType() == fooType) ...
于 2012-06-20T03:31:17.597 回答