Оператор принуждения C #? - PullRequest
4 голосов
/ 08 октября 2010

Я получил этот тест:

[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, выражение выражения, тип convertToType)
...
в AutoMapper.DelegateFactory.CreateGet (метод MethodInfo)

К сожалению - я не смог воспроизвести это в меньшем масштабе и не могу понять, что именно происходит.

Что такое оператор приведения?


Это может быть полезно. Но я не могу извлечь и записать необходимые биты информации.

1 Ответ

5 голосов
/ 08 октября 2010

Я до сих пор не знаю, что именно является оператором принуждения, но по крайней мере - Я решил свою проблему нашел причину.

После некоторой отладки автомата удалось воспроизвести проблему:

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 { }
}

Как оказалось, довольно просто - в источнике есть метод, который называется так же, как и свойство назначения.

...