我需要在某些動作上更新我的POCO實體的某些屬性。c#在確定它實現了一個接口後訪問一個實體的屬性
我定義了以下接口:
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開展的關於不同功能簽名的問題幾乎沒有問題。
- 我寧可不使用反射性能的原因。
有沒有什麼可行的方法讓我擺脫不幸?