标签: expandoobject

如何将具有out参数的方法分配给ExpandoObject?

我正在尝试使用此签名为ExpandoObject分配方法(函数):

public List<string> CreateList(string input1, out bool processingStatus)
{
  //method code...
}
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的代码,下面的代码不能编译:

dynamic runtimeListMaker = new ExpandoObject();
runtimeListMaker.CreateList =
     new Func<string, bool, List<string>>(
           (input1, out processingStatus) =>
                {
                     var newList = new List<string>();

                     //processing code...

                     processingStatus = true;
                     return newList;
                });
Run Code Online (Sandbox Code Playgroud)

不幸的是我无法更改CreateList签名,因为它会破坏向后兼容性,因此重写它不是一个选项.我试图通过使用委托解决这个问题,但在运行时,我得到了"无法调用非委托类型"异常.我想这意味着我没有正确分配代表.我需要帮助使语法正确(委托示例也可以).谢谢!!

c# dynamic-language-runtime expandoobject

1
推荐指数
1
解决办法
797
查看次数

如何对具有ExpandoObject类型的对象应用扩展方法?

这是我的代码:

public static class DynamicExtensions

    public static void Add(this ExpandoObject obj, string path){
        dynamic _obj = obj;
        if (_obj == null) throw new ArgumentNullException("obj");
        _obj.path = path;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我以这种方式调用它时,我得到"'System.Dynamic.ExpandoObject'的错误不包含'Add'的定义":

dynamic obj = new ExpandoObject();
obj.Add("p1");
Run Code Online (Sandbox Code Playgroud)

怎么解决?

提前致谢!

c# extension-methods expandoobject

1
推荐指数
2
解决办法
2193
查看次数

在foreach循环中的expando对象中添加新属性

我必须在foreach循环中的expando对象中添加新属性,但我无法看到这样做的方法.这是一个例子:

var allProperties = new List {"Name","Email","Roles"}; allProperties.AddRange(metaDataModel.GetFormattedFolders());

dynamic expando = new ExpandoObject();
foreach (var s in allProperties)
{
    expando.s = string.Empty;
}
Run Code Online (Sandbox Code Playgroud)

它将's'视为财产,而不是将's'的价值视为财产名称.

谢谢

c# dynamic expandoobject

1
推荐指数
1
解决办法
1969
查看次数

如何将 List&lt;ExpandoObject&gt; 转换为 XML 字符串

我想使用 ExpandoObjects 列表作为 Telerik 报告的数据源,但 Telerik 报告目前似乎不支持此功能。他们确实支持将 XML 作为数据源,所以我试图将我的 ExpandoObjects 列表转换为 XML 字符串。

我已经看到(在Can I serialize an ExpandoObject in .NET 4?),可以通过 jsonFx 通过这个(VB.net 代码,而不是 c#)将单个 ExpandoObject 序列化为 XML 字符串:

dim XMLwriter As New JsonFx.Xml.XmlWriter
dim serializedExpando as string = XMLwriter.Write(obj)
Run Code Online (Sandbox Code Playgroud)

或其等效的 c# 代码:

JsonFx.Xml.XmlWriter XMLwriter = new JsonFx.Xml.XmlWriter();
String serializedExpando  = XMLwriter.Write(obj);
Run Code Online (Sandbox Code Playgroud)

如何将整个列表序列化为 XML 字符串?

c# xml telerik expandoobject dynamicobject

1
推荐指数
1
解决办法
2395
查看次数

ExpandoObject便利工厂?

ExpandoObject有任何便利工厂方法吗?有点像,我不知道,

dynamic disney = new ExpandoObject("First", "Donald", "Last", "Duck");
Run Code Online (Sandbox Code Playgroud)

c# expandoobject

1
推荐指数
1
解决办法
63
查看次数

从c#expando对象动态读取属性

目前我有以下方法 -

public void CreateWorkbook<T>(List<T> ItemList)
{
     PropertyInfo[] properties= typeof(T).GetProperties();
     foreach (PropertyInfo prop in properties)
     {
     }
}
Run Code Online (Sandbox Code Playgroud)

我想T用expando对象替换.但是我无法从expando对象中读取属性.

有什么办法吗?

c# dynamic expandoobject

1
推荐指数
1
解决办法
5515
查看次数

在属性名称为动态时使用ExpandoObject,这可能吗?

我需要创建一个具有动态命名属性的对象,例如:

<users>
  <user1name>john</user1name>
  <user2name>max</user2name>
  <user3name>asdf</user3name>
</users>
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c# dynamic expandoobject

0
推荐指数
1
解决办法
1814
查看次数

如何将字符串列表转换为每个字符都有一个属性的匿名类型

假设我有一个List<string>,其中每个字符串的长度相同。这个长度事先是不知道的,只能通过在运行时检查字符串的 Length 属性(比如第一个,因为它们的长度都相同)来确定。

我想要的是最终得到一组匿名对象,每个对象都有属性 C1、C2 等,每个角色一个。

因此,如果列表中的第一个字符串是“abcd”,那么结果列表中的第一个匿名对象将是...

{
  C1 = "a",
  C2 = "b",
  C3 = "c",
  C4 = "d"
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?我一直在与动态和 ExpandoObjects 作斗争,但还没有设法使它们中的任何一个工作。主要问题似乎是事先不知道属性名称。

我尝试做类似的事情(循环)......

d["C" + i] = str.[j];
Run Code Online (Sandbox Code Playgroud)

...但这不起作用,因为它认为我正在尝试使用数组索引。我收到运行时异常“无法将 [] 索引应用于‘System.Dynamic.ExpandoObject’类型的表达式”

这可以做到吗?

c# dynamic expandoobject

0
推荐指数
1
解决办法
673
查看次数