2011-10-14 103 views
2

我使用Simple.Data检索数据 - 它将数据库表映射到动态对象。 我想将动态对象映射到一个简单的类型。我试过这个:使用ValueInjecter映射动态对象

var dbObject = Database.Default.LocationStatus.FindByLocationStatusId(locationStatusId); 
ILocationStatus domainObject = new LocationStatus(); 
domainObject.InjectFrom((object)dbObject); 

但是没有设置domainObject中的任何属性。 映射应该是简单的属性名称相同,EI:dbObject.Name和domainObject.Name

我要去哪里错了? 注意:其实我可以魔术般地施放(duck typing?)(LocationStatus)dbObject,但我想知道如何使用ValueInjecter进行映射。谢谢。

+1

它应该工作,如果属性具有相同的名称和类型,看看这里:http://valueinjecter.codeplex.com/discussions/240346 – Omu

+1

咋,这就是我的原始代码。我肯定错过了什么。感谢您的帮助查克。 –

回答

0

听起来很奇怪,几天前我遇到了同样的问题,解决方案很简单。

您需要将动态输出转换为您尝试映射的类型。

在我的情况:

WeatherData myData = new WeatherData().InjectFrom((object)weatherData); 

如在评论中引用上面没有工作(我怀疑有同样的问题,因为原来的海报)的职位,但作为使用时投...

WeatherData myData = new WeatherData().InjectFrom((object)weatherData) as WeatherData; 

一切工作正常。

因此,即使是较新的版本,3年以后这仍然是一个问题,并且投射输出类型是修复。