首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetTopologySuite.Geometries.MultiPoint需要具有0个参数的构造函数

NetTopologySuite.Geometries.MultiPoint需要具有0个参数的构造函数
EN

Stack Overflow用户
提问于 2021-03-09 06:16:14
回答 1查看 111关注 0票数 0

我试图用Automapper映射一个NetTopologySuite.Geometries.MultiPoint,但我一直收到错误消息System.ArgumentException: NetTopologySuite.Geometries.MultiPoint needs to have a constructor with 0 args or only optional args

代码语言:javascript
复制
var config = new MapperConfiguration(cfg => {});
var mapper = config.CreateMapper();
     
MultiPoint mp1 = null;
MultiPoint mp2 = mapper.Map<MultiPoint>(mp1); // throws

实际上,这个类型没有带0个参数的构造函数。我尝试指定如何实例化该类型:

代码语言:javascript
复制
new MapperConfiguration(cfg => {
    cfg.CreateMap<MultiPoint, MultiPoint>()
        .ConstructUsing(mp => new MultiPoint((Point[])mp.Geometries));
});

同样的错误。为了用更简单的代码重现,我创建了一个没有0 args构造函数的类。

代码语言:javascript
复制
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() { }
}

是bug,还是我漏掉了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-09-03 08:36:03

我想是因为你的MultiPoint是空的。使用Nettopologysuite的多点(内部指针不能为空)。

代码语言:javascript
复制
MultiPoint mp1 = null;

代码语言:javascript
复制
MultiPoint mp1 = NetTopologySuite.Geometries.MultiPoint.Empty;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66538014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档