2009 Advent Calendar December 14th
But if we're using generics; why not do it for the lock too:
1: public class ImportantProvider<T,L> where T : ImportantInterface, new() where L : Lock,new()
2: {
3: private T _importantObject = new T();
4: private L _lock = new L();
5:
6: public Transaction Transaction
7: {
8: get
9: {
10: return new Transaction(_importantObject, _lock);
11: }
12: }
13: }
But that leads to test code with static fields for verification. And I didn't like that before either... So it is a good idea to back that change out event though the ImportantProvider looks very neat with it IMHO.