使用开放定义从泛型类的属性获取价值 - c#

有没有办法使用反射从开放类型获取属性的值?

class Program
{
    static void Main(string[] args)
    {
        var target = new GenericType<string>();
        target.GetMe = "GetThis";
        target.DontCare = "Whatever";

        var prop = typeof(GenericType<>).GetProperty("GetMe");
        var doesntWork = prop.GetValue(target);
    }
}

public class GenericType<T>
{
    public string GetMe { get; set; }
    public T DontCare { get; set; }
}

prop.GetValue(target)引发以下异常:

无法对包含ContainsGenericParameters为true的类型或方法执行后期绑定操作。

我知道我可以做target.GetType().GetProperty("GetMe").GetValue(target),但是我想知道是否有一种不知道类型的获取值的方法。

一个简单的解决方案是拥有一个仅包含GetMe的非泛型基类,但是我现在无法进行更改。

参考方案

就我个人而言,我只是避免一起思考,而在这种情况下使用dynamic关键字。

var val = ((dynamic)target).GetMe;

但是如果您真的想使用反射,则可以使用以下方法。

var val = typeof(GenericType<string>).GetProperty("GetMe").GetValue(target);

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…

Json到php,json_decode返回NULL - php

我正在用PHP进行JSON解析器的一些API,用于存储有关遗产的信息。我在解析时遇到问题,因为它返回的是NULL值而不是数组或对象。简单的JSON代码可以很好地解析,但是可以这样:{"success":true,"totalCount":1,"data":[{"id":99694…

将ajax的值存储到javascript变量中 - javascript

我有一个php文件,其中我从服务器获取数据。该php文件的输出是一个包含json格式数据的变量。PHP文件:<?php $dbHostName = "localhost"; $dbUserName = "venseld"; $dbUserPass = "wecuuu"; $dbName = &…