接口转换
原文链接:http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/#/Casting_between_interfaces/000100000220000000/
VB.NET中的接口转换略
C#中的接口转换
C#中进行接口转换最好的办法是通过“as”。用as好过直接强制转换是因为如果转换失败的话,as的方式会返回null,而直接转换的话则会报异常exception。下面的示例中的第一行是直接转换的方式。当你很确定转换可以成功时那么这种方式是可以的,不然的话就会报异常。更安全的做法是使用as进行接口转换,这样要是不成功的话会返回null。
IGeometry geometry = (IGeometry)point;// Straight cast.
IGeometry geometry = point asIGeometry;// Asoperator.
下面的示例是说明如何处理返回null的情况:
IPoint point = new PointClass();
IGeometry geometry = point asIGeometry;
if (geometry !=null)
{
Console.WriteLine(geometry.GeometryType.ToString());
}
另外还可以在进行接口转换前先用“is”检查一下对象是否实现了某个接口,然后再进行直接转换,如:
IPoint point = new PointClass();
if (pointisIGeometry)
{
IGeometry geometry = (IGeometry)point;
Console.WriteLine(geometry.GeometryType.ToString());
}