C# - 根据Type将对象强制转换为IList <T>

blu*_*blu 5 c# generics reflection

我正在尝试一些反思,并对如何将结果对象转换为IList有疑问.

这是反思:

private void LoadBars(Type barType)
{
    // foo has a method that returns bars
    Type foo = typeof(Foo);

    MethodInfo method = foo.GetMethod("GetBars")
        .MakeGenericMethod(bar);

    object obj = method.Invoke(foo, new object[] { /* arguments here */ });
    // how can we cast obj to an IList<Type> - barType
}
Run Code Online (Sandbox Code Playgroud)

我们如何转换方法的结果.从barType参数中调用到类型的IList?

Jon*_*eet 5

演员的观点通常是告诉编译器你有一些额外的信息 - 你在编译时知道一些事情.你在这里不知道这些信息 - 你只能在执行时知道它.

投射后你对这个价值的期望是什么?不可否认,有些时候它会很有用 - 当你必须使用通用接口时,即使你想要获得不需要类型参数的成员(例如Countin IList<T>).但是,如果这不是你想要做的,那么如果你能提供更多信息,那将会非常有帮助.