C# 映射相同对象时ValueInjector中的System.ArgumentException
我有一门课:C# 映射相同对象时ValueInjector中的System.ArgumentException,c#,valueinjecter,C#,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 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; }
}
我有两个例子
对象1和对象2
我想为特定属性注入object2->object1
因此,我重写了Match方法,如下所示:
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io");
}
}
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io")
&& c.SourceProp.Name == c.TargetProp.Name;
}
}
我使用的注射剂如下:
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io");
}
}
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io")
&& c.SourceProp.Name == c.TargetProp.Name;
}
}
object1.InjectFrom(object2)
我不明白为什么我会得到这个例外
{“System.String”类型的对象无法转换为类型
“System.Int32”。”}
如果我不重写Match方法,它会工作,但我得到的属性是我不想从object1中替换的
有什么想法吗?您正在尝试将iolitm(字符串)放在iodoco(int)中 试着这样做:
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io");
}
}
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io")
&& c.SourceProp.Name == c.TargetProp.Name;
}
}
您试图将iolitm(字符串)放入iodoco(int)中 试着这样做:
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io");
}
}
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io")
&& c.SourceProp.Name == c.TargetProp.Name;
}
}
您试图将iolitm(字符串)放入iodoco(int)中 试着这样做:
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io");
}
}
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io")
&& c.SourceProp.Name == c.TargetProp.Name;
}
}
您试图将iolitm(字符串)放入iodoco(int)中 试着这样做:
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io");
}
}
public class LotInfoInject : ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return c.SourceProp.Name.StartsWith("io")
&& c.SourceProp.Name == c.TargetProp.Name;
}
}
除了指定源应以io开头外,还应指定目标属性应等于源属性Y,如果要从字符串变为Int,还可以重写SetValue除了指定源应以io开头外,还应指定目标属性应等于源属性Y如果要从字符串转到Int,还可以重写SetValue。除了指定源应以io开头外,还应指定目标属性应等于源属性。如果要从字符串转到Int,还可以重写SetValue。除了指定源应以io开头,还应指定该目标属性应等于源属性。如果要从字符串变为int,还可以重写SetValue