5

私はこのテストを受けました:

[Fact]
public void EverythingIsMappedJustFine(){
  new AutoMapperTask().Execute();
  Mapper.AssertConfigurationIsValid();
}

少し奇妙な例外がスローされます。

テスト 'Unit.Web.Bootstrap.AutoMapperFacts.EverythingIsMappedJustFine' が失敗しました:
System.InvalidOperationException :
タイプ 'System.Void' と 'System.Object' の間に強制演算子が定義されていません。
System.Linq.Expressions.Expression.GetUserDefinedCoercionOrThrow(ExpressionType coercionType, Expression expression, Type convertToType)で
...
AutoMapper.DelegateFactory.CreateGet(MethodInfo メソッド) で

残念ながら、これを小規模で再現することはできず、正確に何が起こっているのかわかりません。

強制演算子とは何ですか?


これは役に立つかもしれません。しかし、私は必要な情報ビットを抽出して馬鹿にすることに失敗しています。

4

1 に答える 1

6

強制演算子が正確に何であるかはまだわかりませんが、少なくとも -理由が見つかったので問題を解決しました。

いくつかのオートマッパーのデバッグで問題を再現できた後:

namespace mappertest
{
    using AutoMapper;
    using NUnit.Framework;

    [TestFixture]
    public class FooFacts
    {
        [Test]
        public void MapToFizz()
        {
            Mapper.Initialize(c => c.AddProfile(new FooProfile()));

            var foo = new Foo { Bar = "BarValue" };
            var fooModel = Mapper.Map<Foo, FooModel>(foo);

            Assert.AreEqual("BarValue", fooModel.Bar);
        }
    }

    public class FooProfile : Profile
    {
        protected override void Configure()
        {
            CreateMap<Foo, FooModel>();
        }
    }

    public class Foo
    {
        public string Bar { get; set; }
        public void Fizz() { }
    }

    public class FooModel
    {
        public string Bar { get; set; }
        public FizzModel Fizz { get; set; }
    }

    public class FizzModel { }
}

結局のところ、非常に単純です-ソースには、宛先プロパティと同じように名前が付けられたメソッドがあります。

于 2010-10-08T14:55:44.500 に答える