将POCO映射到具有属性的对象[]
本文关键字:对象 属性 POCO 映射 | 更新日期: 2023-09-27 17:49:55
我有3个类,其中我可以控制[Machine - my POCO]。2类是第三方;Item和ItemValue(从Item派生)。Item有一个属性UniqueIdentifier
我有一个服务器,它需要Item[]元素传递给它,这些元素由服务器更新。服务器有一个更改事件,我收到一个带有参数ItemValue[]项的回调。哪些项目可以包含任何更改-包括不在我的POCO中的项目。我需要轻松地映射属性ItemValue。值设置为POCO属性,因此我可以设置POCO的值。我正在使用POCO来更新数据库,并绑定到UI,我已经实现了INotifyPropertyChanged
少。属性= ItemValue[index]。我需要确保这个实际对象对应于POCO。地产)(在某种程度上,我需要能说POCO。属性属于ItemValue[index]。UniqueID,我不想做迭代的嵌套循环,当我创建Item[]时,我确实可以控制UniqueID,越快越好,我正在考虑使用某种字典来映射它,但我不确定究竟如何用示例或在哪里实现它,我的Poco或中间类..
如果可能的话,我想要做所有这些,如果可能的话,所以也许我需要一个像Mapper这样的中介我想我可以用它来创建我的物品Item[]对于T的每个属性,CreateItem => Item,分配UniqueIdentifier, assignTargetAddress, DataType添加到…的字典中
我看过:
将POCO映射到实体框架中的实体
为映射x,y单元格的POCO属性添加属性答案是:一个更具描述性的类模型——这意味着我所有的poco都需要这样的东西来处理float, bool, string, int等,这也使得它的硬编码不那么通用。-我需要为每个数据类型做一个类,然后在我所有的poco更改中使用该类和UI绑定,以及数据库更新,我需要获得这些值。
:http://blogs.msdn.com/b/alexj/archive/2009/06/19/tip-26-how-to-avoid-database-queries-using-stub-entities.aspx似乎更多的是一种数据库方法,我的对象回来了,我不知道有多少或什么对象返回,只是他们有一个唯一的id对应于我创建并传递给服务器的项目。我需要某种方法使用那个UniqueID将属性映射回POCO。这里看起来类似于我正在寻找,我猜,但我只是不确定它或如何转换-我不希望一切转换为字符串-也许我看这个错误。c#用户定义的CSV到POCO的映射
任何帮助都是感激的,因为我比大师更nubish。
public List<Machine> Machines;
public List<Item> MachineItems;
public class Machine : IMachine
{
[DataMember]
double SensorA {get; set;}
[DataMember]
double SensorB {get; set;}
[DataMember]
string Sytem1 {get; set;}
}
public class ItemValue : Item
{
object value;
}
public class Item
{
object clientID;
string targetAddress;
System.Type sysType;
}
OnNewlyReadValues(ItemValue[] itemValues)
{
// each itemValue in itemValues represents a property
// in the POCO .
// itemValues May contain one itemValue or all itemValue
// that represent the values in the POCO.
// Determine if itemValue is for which Machine.PropertyName
// property SensorA (or any of the properties)
// Machine.Property = itemValue.Value;
}
我找到了codeproject上提供给我的答案:使用带有操作的字典将使我能够跟踪条目以及它所属的属性,通过clientID
public Dictionary<object, Action<machine,object>> setters
= new Dictionary<object, Action<machine,object>>();
我的clientID是一个Guid。PropertyName所以现在我可以很容易地匹配机器(Guid)。地产