C # opérateur de coercition?
-
28-09-2019 - |
Question
Je suis arrivé ce test:
[Fact]
public void EverythingIsMappedJustFine(){
new AutoMapperTask().Execute();
Mapper.AssertConfigurationIsValid();
}
Il jette un peu étrange exception:
Test 'Unit.Web.Bootstrap.AutoMapperFacts.EverythingIsMappedJustFine' a échoué:
System.InvalidOperationException: Aucun opérateur de contrainte est défini
entre les types de System.Void 'et 'System.Object'.
à System.Linq.Expressions.Expression.GetUserDefinedCoercionOrThrow (ExpressionType coercionType, expression d'expression, type convertToType)
...
à AutoMapper.DelegateFactory.CreateGet (méthode MethodInfo)
Malheureusement -. Je ne pouvais pas reproduire ce à l'échelle plus petite et ne peut pas comprendre ce qui se passe exactement
Qu'est-ce que l'opérateur de la contrainte?
Cette pourrait être utile. Mais je ne pas extraire et abêtir bits d'information nécessaires.
La solution
Je ne sais toujours pas ce qui est l'opérateur de la contrainte exactement, mais au moins -. Je résolu mon problème raison trouvés
Après un certain débogage automapper a pu reproduire le problème:
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 { }
}
Très simple il se trouve -. Source a la méthode qui est nommée comme propriété de destination