Unity 2.0 предоставляет нам три вида перехвата:
- InterfaceInterceptor для перехвата методов интерфейса
- VirtualMethodInterceptor для перехвата виртуальных методов
- TransparentProxyInterceptor для перехвата методов у объектов типа MarshalByRefObject
public class Customer
{
public int CustomerId { get; set; }
public string ContactName { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
public class Order
{
public int OrderId { get; set; }
public string Description { get; set; }
public Customer Customer { get; set; }
}
public DateTime GetDate()
{
ICache cache = ...; // получим экземпляр кэша
string key = "somekey";
object value;
// Попробуем достать данные из кэша
if (!cache.TryGet(key, out value))
{
// Данные в кэше отсутствуют,
// получим новые данные
value = DateTime.Now;
// и поместим их в кэш на 5 секунд
cache.Add(key, value, TimeSpan.FromSeconds(5));
}
return (DateTime)value;
}