美文网首页
金蝶云DynamicObject的相关操作

金蝶云DynamicObject的相关操作

作者: 你们不要再打 | 来源:发表于2022-07-30 09:14 被阅读0次
    DynamicObject 类似于键值对
    
    假如现在有一个变量 DynamicObject 对象 dynamicObject ,它有一个 Name 的键
    
    1. DynamicObject 取值
        //  * 取出来的值是object类型
        string name = (string) dynamicObject["Name"];
        
    2. DynamicObject 赋值
        string newName = "张三";
        dynamicObject["Name"] = newName;
        
    3. DynamicObject  新增键
         给 DynamicObject 里不存在的键赋值,sorry 做不了,会报错。
         但是可以搞一手 狸猫换太子(我在金蝶里特喜欢用这招)。
         思路: 创建一个 DynamicObject 来替换现有的 DynamicObject
         
         DynamicObjectType dynamicObjectType = dynamicObject.DynamicObjectType;
         // 在原来的基础上新增一个键
         dynamicObjectType.RegisterProperty("ID", typeof(string));
         DynamicObject newDynamicObject = new DynamicObject(dynamicObjectType);
         newDynamicObject["ID"] = "1234";
         // 把原来的键值再赋值新的对象上 可以结合下面 DynamicObject  复制
         ……
         然后再把 newDynamicObject 替换掉  DynamicObject 就行了 
         
         既然看到这儿,我想你可能在修改 DynamicObjectCollection 里元素的数据
         如果你是要对 DynamicObjectCollection 全部元素,或者一部分元素进行新增键的话
         ————————————————————————————————————————————————
         下面的话对你有用哦
         对于  DynamicObjectCollection ,如果添加了一个DynamicObject对象,
         这个对象有着 DynamicObjectCollection 里其他元素没有的键,
         那么 DynamicObjectCollection 里其他的元素都会添加这个键
         举个例子:
         DynamicObjectCollection  collection; 
         // 这个collection里的所有的元素的键只有 Name
         // 如果执行 collection[0]["ID"] = "123"; 这句,就会报错
         
         DynamicObjectType dynamicObjectType = collection[0].DynamicObjectType;
         dynamicObjectType.RegisterProperty("ID", typeof(string));
         DynamicObject newDynamicObject = new DynamicObject(dynamicObjectType);
          // Add()完成后,collection里全部的元素都会有 ID 这个键,可以打断点看一下
         collection.Add(newDynamicObject );
         collection.Remove(newDynamicObject );
        
         // 现在再执行这句就没问题,即使 collection.Remove() 了新加的元素
         collection[0]["ID"] = "123";
         
         // 这个方法,即不会频繁的操作collection的 Add 和 Remove
         // 也不用 狸猫换太子,只是把狸猫放到太子面前溜一圈
         // 可谓是十分的方便
         ————————————————————————————————————————————————
        
    4. DynamicObject  复制
         // 这样就创建了一个跟 dynamicObject 一样结构的DynamicObject对象
         DynamicObjectType dynamicObjectType = dynamicObject.DynamicObjectType;
         DynamicObject newDynamicObject = new DynamicObject(dynamicObjectType );
         foreach( DynamicProperty property  in dynamicObjectType.Properties){
             newDynamicObject[property.Name]=dynamicObject[property.Name];
         }
    

    相关文章

      网友评论

          本文标题:金蝶云DynamicObject的相关操作

          本文链接:https://www.haomeiwen.com/subject/uckkwrtx.html