我遇到这种情况:
public class busOrder: IbusOrder
{
public Order vOrder { get; set; }
MyDataContext db = new MyDataContext();
public busOrder(int pOrderId)
{
vOrder = db.Orders.SingleOrDefault(p => p.Id == pOrderId);
}
public int SaveNew()
{
...
}
public int GetStatus()
{
...
}
}
您可能已经注意到,Order
是我的 datacontext 中的表格,而构造函数“填充”vOrder
,我可以通过链接轻松完成此操作(一行)。
但是当我调用使用对象属性时,我必须这样做:
busOrder openOrder = new busOrder(someId);
然后我必须这样做才能获得列:
openOrder.vOrder.Date;
openOrder.vOrder.Status;
有没有办法让我更容易访问这些值(比如openOrder.Date
,而无需在课程中逐个手动创建和设置它们?
答案 0 :(得分:1)
您可以使用AutoMapper复制对象之间的属性值。
答案 1 :(得分:1)
您也可以使用动态语言运行时。
编辑:如果你使用的是.NET 4.0,你可以实现类似的东西:class Program
{
static void Main(string[] args)
{
dynamic order = new BusOrder();
Console.WriteLine(order.Test);
Console.ReadLine();
}
}
class BusOrder : DynamicObject
{
private Order _order = new Order();
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = _order.GetType().GetProperty(binder.Name).GetValue(_order, null);
return true;
}
}
答案 2 :(得分:0)
我所知道的并不容易。当我必须这样做的时候,我通常只是手工写出第一个属性,然后复制并粘贴风暴。
public int Status
{
get { return this.vOrders.Status; }
set { this.vOrders.Status = value; }
}