如何将属性插入匿名类型?

时间:2016-06-14 02:09:01

标签: c# anonymous-types workfront-api

我正在执行post到工作台api,看起来像这样

        public JToken Create(ObjCode objcode, object parameters) {

            var p = parameterObjectToStringArray(parameters, "apiKey=" + APIKey);
            var json = _client.DoPost($"/{objcode}", p);
            return json;
        }

parammeterObjectToStringArray如下

    private string[] parameterObjectToStringArray(object parameters, params string[] toAdd) {
        List<string> p;
        if (parameters != null)
        {
            var properties = parameters.GetType().GetProperties();
            p = new List<string>(properties.Length);
            foreach (var prop in properties)
            {
                var line = $"{prop.Name}={prop.GetValue(parameters, null)}";
                p.Add(line);
            }
        }
        else
        {
            p = new List<string>();
        }
        p.AddRange(toAdd);
        return p.ToArray();
    }

它需要anonymous type作为第一个看起来像这个

的参数
new {name = "name of something", price = 33.49}

并将所有这些属性转换为字符串数组。

我希望能够创建匿名类型并动态添加特性并传递给此函数。有没有办法创建new {}并在其中插入值而不创建实现IEnuemerable的匿名类型?我尝试了dynamic JObject,但第var properties = parameters.GetType().GetProperties();行返回了我不期望的值,而不是parameters对象中的值。

我可以为此创建另一个功能,但我希望所有内容都集中在一起。

0 个答案:

没有答案