System.ArgumentException в valueinjecter при сопоставлении одних и тех же объектов

У меня есть класс:

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

У меня 2 экземпляра.

Объект1 и Объект2

Я хочу ввести объект2 -> объект1 для определенных свойств.

Итак, я переопределил метод Match следующим образом:

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

    }

и я использую инжектор следующим образом:

объект1.InjectFrom(объект2);

Я не могу понять, почему я получаю исключение.

{"Объект типа 'System.String' не может быть преобразован в тип 'System.Int32'."}

Если я НЕ переопределяю метод Match, он работает, но я получаю свойства, которые я не хочу заменять из object1

Любые идеи?


person e4rthdog    schedule 18.07.2014    source источник
comment
помимо указания того, что источник должен начинаться с io, вы также должны указать, что целевое свойство должно быть равно исходному свойству.   -  person Omu    schedule 18.07.2014
comment
вы также можете переопределить SetValue, если хотите перейти от строки к int   -  person Omu    schedule 18.07.2014


Ответы (1)


Вы пытаетесь поместить iolitm (string) в iodoco (int).

Попробуйте так:

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

}
person Jan Van Herck    schedule 18.07.2014