代码之家  ›  专栏  ›  技术社区  ›  3x071c

C#将变量类型传递给泛型方法,并将结果对象强制转换回该类型

  •  0
  • 3x071c  · 技术社区  · 6 年前

    Newtonsoft.Json .

    public class Foo
    {
        public Type Expected;
        public object Result;
        public Foo()
        {
            Expected = typeof(RootObject);
        }
        public void Process()
        {
            string json = @"{
            'Foo': 'oof',
            'Baz': 0,
            'Bar': [
            'Yeet',
            'Skeet'
            ]
            }";
            Result = JsonConvert.DeserializeObject<Expected>(json); // -> doesnt work
        }
    }
    

    Process() 在我可能更改了 Expected
    this question

    Result = ((Func<string, object>)JsonConvert.DeserializeObject).Method.MakeGenericMethod(Expected).Invoke(null, new object[]{json});
    

    真管用!á
    object ,这是很难处理的。我一直想把结果公诸于众 打字,但就是不让我。

    Result = (Expected)((Func<string, object>)JsonConvert.DeserializeObject).Method.MakeGenericMethod(Expected).Invoke(null, new object[]{json});
    

    告诉我类型或命名空间 预期 Result 像这样的财产

    public Expected Result;
    

    但我的梦想没有实现。
    我不知道我应该如何进一步处理这个问题以获得 结果 对象的类型 预期 所以我可以很容易地访问它的属性,或者如果有更好的方法来解决这个变量类型泛型方法的问题。
    我有完整的(样品)标记 dotnetfiddle ,感谢您抽出时间!

    0 回复  |  直到 6 年前