我有这样的代码:
class PacketDAO{
//...
public void UpdatePacketStatus(Guid packetID, Status status)
{
using (var ctx = new DataContext())
{
var packet = ctx.Packet.SingleOrDefault(p => p.PacketID == packetID);
packet.Status = status;
ctx.SubmitChanges();
}
}
public void UpdatePacketTime(Guid packetID, DateTime? time)
{
using (var ctx = new DataContext())
{
var packet = ctx.Packet.SingleOrDefault(p => p.PacketID == packetID);
packet.Time = time;
ctx.SubmitChanges();
}
}
//...
}
Run Code Online (Sandbox Code Playgroud)
我们可以注意到代码中有些无聊的重复.
因此,以一种我们可以负担得起的方式编写一个通用的方法Update会更好:
packet.Update<Guid, Packet>(guid, p => p.Time = DateTime.Now);
packet.Update<Guid, Packet>(guid, p => p.Status = Status.Ok);
Run Code Online (Sandbox Code Playgroud)
请告诉我,是否可以编写这样的方法?
我可以从中学到哪本书? …