c# - NetTopologySuite.Geometries.MultiPoint 需要有一个 0 args 的构造函数
问题描述
我正在尝试使用Automapper 映射NetTopologySuite.Geometries.MultiPoint但我不断收到错误消息System.ArgumentException: NetTopologySuite.Geometries.MultiPoint needs to have a constructor with 0 args or only optional args
。
var config = new MapperConfiguration(cfg => {});
var mapper = config.CreateMapper();
MultiPoint mp1 = null;
MultiPoint mp2 = mapper.Map<MultiPoint>(mp1); // throws
实际上,这种类型没有带 0 个参数的构造函数。我试过指定如何实例化类型:
new MapperConfiguration(cfg => {
cfg.CreateMap<MultiPoint, MultiPoint>()
.ConstructUsing(mp => new MultiPoint((Point[])mp.Geometries));
});
同样的错误。为了用更简单的代码重现,我创建了一个没有 0 args 构造函数的类。
var config = new MapperConfiguration(cfg => { });
var mapper = config.CreateMapper();
TestCollection tc1 = null;
TestCollection tc2 = mapper.Map<TestCollection>(tc1); // throws
class Test
{
}
class TestCollection : IEnumerable<Test>
{
public TestCollection(Test[] tests) => Tests = tests;
public Test[] Tests { get; set; }
public IEnumerator<Test> GetEnumerator() => new TestCollectionEnumerator();
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
class TestCollectionEnumerator : IEnumerator<Test>
{
object IEnumerator.Current => Current;
public Test Current { get; }
public bool MoveNext() => false;
public void Reset() { }
public void Dispose() { }
}
这是一个错误还是我错过了什么?
解决方案
我认为这是因为您的 MultiPoint 为空。使用 Nettopologysuite 多点(内部的点不能为空)。
MultiPoint mp1 = null;
至
MultiPoint mp1 = NetTopologySuite.Geometries.MultiPoint.Empty;
推荐阅读
- java - 使用 Java 客户端调用启用 SSL 的肥皂 Web 服务时出错
- php - 将 ext/hash 从资源移动到对象 php PHP 7.2 迁移
- postgresql - 为单个 PostgreSQL 实例指定不同的数据库和相关文件位置
- intellisense - SSMS Intellisense 适用于某些架构,不适用于其他架构
- php - 此集合实例 laravel 关系上不存在属性 [X]
- angular - 当用户登录、注销或用户更改时,如何在 angular-meteor 中赶上事件?
- spring-data - 如何在 Spring Data 的自定义 MongoRepository 中使用 QueryDSL
- pandas - Holoviews Histogram 不再正确绘制,产生奇怪的图形
- loops - 循环宏: using 子句中的括号
- aem - 在 AEM 6.3 中创建自定义角色