e4rthdog
e4rthdog

Reputation: 5223

System.ArgumentException in valueinjecter when mapping same objects

I have a class:

public class LotInfo
    {
        public string lotn { get; set; }
        public string imlitm { get; set; }
        public string imdsc { get; set; }
        public string wplotn { get; set; }
        public int wptrdj { get; set; }
        public DateTime wptrdj_d { get; set; }
        public string wplitm { get; set; }
        public int wptrqt { get; set; }
        public string wpkyfn { get; set; }
        public int wpdoco { get; set; }
        public string iolitm { get; set; }
        public string iodcto { get; set; }
        public int iodoco { get; set; }
        public int ioub04 { get; set; }
    }

I have 2 instances.

Object1 and Object2

I want to inject object2 -> object1 for specific properties.

So i have overridden the Match method like this:

public class LotInfoInject : ConventionInjection
    {
        protected override bool Match(ConventionInfo c)
        {
            return c.SourceProp.Name.StartsWith("io");
        }

    }

and i am using the injecter like this:

object1.InjectFrom(object2);

I cant figure out why i am getting the exception.

{"Object of type 'System.String' cannot be converted to type 'System.Int32'."}

If i DONT override the Match method it works but i am getting properties that i dont want replaced from object1

any ideas?

Upvotes: 0

Views: 99

Answers (1)

Jan Van Herck
Jan Van Herck

Reputation: 2284

You're trying to put iolitm (string) in iodoco (int).

Try like this:

public class LotInfoInject : ConventionInjection
{
    protected override bool Match(ConventionInfo c)
    {
        return c.SourceProp.Name.StartsWith("io")
            && c.SourceProp.Name == c.TargetProp.Name;
    }

}

Upvotes: 3

Related Questions