技术开发 频道

ICE框架之Sclice2CSharp映射---类的映射


【IT168技术文档】

  Slice 类映射到同名的C# 类。对于每一个Slice 数据成员,生成的类都有一个对应的public 数据成员(就像结构和异常的情况),而每一个操作都有一个对应的成员函数。考虑下面的类定义:
class TimeOfDay { short hour; // 0 - 23 short minute; // 0 - 59 short second; // 0 -59 string format(); // Return time as hh:mm:ss };
  Slice 编译器为这个定义生成这样的代码:
public interface TimeOfDayOperations_ { string format(Ice.Current __current); } public interface TimeOfDayOperationsNC_ { string format(); } public abstract class TimeOfDay : Ice.ObjectImpl, TimeOfDayOperations_, TimeOfDayOperationsNC_ { public short hour; public short minute; public short second; public TimeOfDay() { } public TimeOfDay(short hour, short minute, short second) { this.hour = hour; this.minute = minute; this.second = second; } public string format() { return format(new Ice.Current()); } public abstract string format(Ice.Current __current); }
  关于生成的代码,注意以下几点:

  1. 编译器生成了叫作 TimeOfDayOperations和TimeOfDayOprationsNC_的操作接口。对于类中的每一个 Slice 操作,在操作接口中都有一个对应的方法。

  2. 生成的类继承自Ice.Objet,这意味着所有的类默认继承自Ice.Object,Ice.Object是所有类的祖先,注意Ice.Object不同于Ice.ObjectPrx,也就是说,你不能在应该传递代理的地方使用class实例,反之亦然。
如果一个类只有数据成员,没有操作,则Slice2C#编译器生成一个非虚类(non_abstract class).

  3. 编译器生成的类为每个slice数据成员生成了一个公共数据字段。

  4. 编译器生成的类从操作接口中继承了所有成员函数。

  5. 编译器生成的类拥有两个构造函数

  上面只是简短的说了一下,下面让我们来详细的说明一下每个部分。
0
相关文章