• ICE框架之Slice2CSharp映射---字典的映射


     在slice中我们有如下定义:

    Dictionary<long, Employee> EmployeeMap;

    Slice2CS编译器会将上面的字典生成同名的C#类:

           public class EmployeeMap : System.Collections.DictionaryBase,

                                                  System.ICloneable

        {

          public Employee this[long key] { get; set; }

          public System.Collections.ICollection Keys { get; }

          public System.Collections.ICollection Values { get; }

          public void AddRange(EmployeeMap d);

    public void Add(long key, Employee value);

          public void Remove(long key);

          public bool Contains(long key);

          public object Clone();

          public override int GetHashCode();

          public override bool Equals(object other);

          public static bool Equals(EmployeeMap lhs,

                                          EmployeeMap rhs);

          public static bool operator==(EmployeeMap lhs,

                                               EmployeeMap rhs);

          public static bool operator!=(EmployeeMap lhs,

                                               EmployeeMap rhs);

         }

           注意生成的类继承自DictionaryBase基类,所以也就拥有基类的方法。利用继承自基类的AddRange方法我们可以将一个字典的内容附加到另一个字典。如果目标字典和源字典的键有冲突的话,目标字典的键不会被覆盖。例如:

    Employee e1 = new Employee();

    e1.number = 42;

    e1.firstName = "Herb";

    e1.lastName = "Sutter";

    EmployeeMap em1 = new EmployeeMap();

    em[42] = e1;

    Employee e2 = new Employee();

    e2.number = 42;

    e2.firstName = "Stan";

    e2.lastName = "Lipmann";

    EmployeeMap em2 = new EmployeeMap();

    em[42] = e2;

    // Add contents of em2 to em1

      em1.AddRange(em2);

    // Equal keys preserve the original value

    Debug.Assert(em1[42].firstName.Equals("Herb"));

    生成的代码也提供了GetHashCodeEquals== !=方法(两个字典只有在它们包含的条目一样多,并且每个条目的键和值都相同时,才被认为是相等的)。

           生成的Clone方法依然是浅copy

  • 相关阅读:
    学校的破网,你别再掉了
    PhotoShop SDK的获取
    我的C++博客开张了
    一个新的嵌入式门户
    试用Bloglines.com
    PhotoShop的插件体系
    VB6 to VB.NET Migration Guide Community Preview #4
    看看Microsoft都买了些什么
    Borland CTO辞职
    PhotoShop插件的开发
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/1196955.html
Copyright © 2020-2023  润新知