在C#中判断某个类是否实现了某个接口

有时我们需要判断某个类是否实现了某个接口(Interface),比如在使用反射机制(Reflection)来查找特定类型的时候。

简单来说,可以使用Type.IsAssignableFrom方法:

从字面意思可以看出,IsAssignableFrom表示BarClass类型能否赋值给IFoo接口,所以它返回true的条件就是BarClass直接或间接实现了IFoo接口。Type类型中还有一个方法是IsSubclassOf,它只能用于判断类的继承关系,比如

表示FooClass是继承自BarClass。

当然IsAssignableFrom也可以用来判断继承关系。

于是,对于以下的代码:

IsSubclassOf和IsAssignableFrom的返回值为:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#判断一个点是否在某个要素文件,可以使用ArcObjects来完成。下面是一个基本的示例代码: ```csharp using ESRI.ArcGIS.ADF; using ESRI.ArcGIS.ADF.Connection.Local; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.DataSourcesFile; using ESRI.ArcGIS.Geometry; // 要素文件路径 string filePath = @"C:\Temp\sample.shp"; // 创建工作空间 IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(filePath), 0); // 获取要素 IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace; IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(filePath)); // 创建查询过滤器 ISpatialFilter spatialFilter = new SpatialFilterClass(); spatialFilter.Geometry = point; // point是待判断的点 spatialFilter.GeometryField = featureClass.ShapeFieldName; spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains; // 进行查询 IFeatureCursor featureCursor = featureClass.Search(spatialFilter, false); IFeature feature = featureCursor.NextFeature(); // 判断结果 if (feature != null) { Console.WriteLine("该点在要素"); } else { Console.WriteLine("该点不在要素"); } ``` 首先,需要通过工作空间工厂创建一个工作空间,然后再通过工作空间获取要素。接着,创建一个空间过滤器,设置查询的几何对象和关联的字段,以及查询空间关系。最后,使用要素的Search方法执行查询,如果返回的Feature对象不为空,则表示该点在要素

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值