0

我这里有问题。(C#)

另一个程序集中有一个集合(我无法更改它),它接受一个字符串作为参数并返回一个对象。

喜欢:

object Value = ThatCollection.GetValue("ParameterName");

问题是,对于每个参数字符串,它返回一个不同的类型作为对象。我想要的是将这些对象转换为它们各自的类型,仅在运行时通过它们的字符串名称知道类型。

我需要对这些返回值进行一些操作。为此,我需要正确地投射它们以访问它们的成员等。

限制:

  • 我不能使用“动态”,因为我的代码需要在较旧的框架中完成:3.5(因为互操作问题)。
  • 我需要对许多不同类型的返回值进行操作(当然,除了“对象”之外,没有通用接口或基类)
  • 我所拥有的只是一个将参数名称与其返回类型相关联的表(包含字符串值)。
  • 是的,我可以将该表转换为 biiig “switch” 语句,不是很好,不希望那样。

有什么提示吗??

4

1 回答 1

0

您想研究反射,类似以下的东西应该可以将对象转换为类型 T。设置一个简单的转换方法:

    public static T CastToType<T>(object o)
    {
        return (T)o;
    }

使用反射调用它:

    Type t = Type.GetType(stringName)
    MethodInfo castTypeMethod = this.GetType().GetMethod("CastToType").MakeGenericMethod(t);
    object castedObject = castTypeMethod .Invoke(null, new object[] { obj });
于 2013-03-15T18:24:57.393 回答