我处于互操作场景中,因此我正在处理在不同程序集中使用的结构和类,因此转换是不够的,必须逐个字段手动进行,这非常无聊且容易出错.
所以我设计了一个复制大量简单字段/属性的函数,我只处理有问题的字段/属性。
当我仅对属性执行此操作时,它可以正常工作。但是我现在需要如何修复此LiNQ
查询,以便能够从源对象中获取字段列表并将它们与目标对象上的属性连接起来。
下面的代码:
var TypeOrig = pSource.GetType();
var TypeDest = pTarget.GetType();
var TypeString = typeof(System.String);
var PropOrig = TipoOrig.GetFields(); // if it is GetProperties instead
// of GetFields works OK
var PropDest = TipoDest.GetProperties();
var QryPropVT =
from
POrig in PropOrig
join PDest in PropDest
on new
{
POrig.Name,
POrig.FieldType
} equals new
{
PDest.Name,
PDest.PropertyType
}
where POrig.PropertyType.IsValueType || (POrig.PropertyType.Equals(TipoString))
select new
{
PropO = POrig,
PropD = PDest
};
Visual C# error: Error 2 The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'Join'.
编辑:我看到了价值注入器,但这就像使用死星杀死蚊子......[/编辑]