我需要在某些操作上更新我的 POCO 实体的某些属性。
我定义了以下接口:
public interface IEntityPOCO
{
Guid Id { get; set; }
}
public interface IHasLastChange : IEntityPOCO
{
DateTime LastChange { get; set; }
}
这是一个示例操作方法:
public void SomeStuff<T>(T entity) where T : class, IEntityPOCO
{
entity.Id = Guid.NewGuid(); // Works like a charm.
if (entity is IHasLastChange)
{
entity.LastChange = DateTime.Now; // Doesn't work. D'oh.
(IHasLastChange)entity.LastChange = DateTime.Now; // Doesn't work either.
}
}
- 由于 POCO 可能实现了很多不同的属性(都具有相应的接口),因此使用不同的函数签名来解决问题几乎是不可能的。
- 出于性能原因,我宁愿不使用反射。
有什么可行的方法让我摆脱痛苦吗?