public T CreateNew <T>() where T : class, new() { var instance = new T(); var cachedStub = StubTypeCacheManager.Get(instance); if (cachedStub == null) { var avaliableProps = instance.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public).Where(w => w.CanWrite); var mapping = new List <KeyValuePair <string, StubDataType> >(); foreach (var pinfo in avaliableProps) { var convention = StubDataMappingProfile.Conventions.FirstOrDefault(w => w.Condition.Invoke(pinfo)); if (convention != null) { mapping.Add(new KeyValuePair <string, StubDataType>(pinfo.Name, convention.StubDataType)); } } var typeItem = new StubTypeItem(); typeItem.SetMapping(mapping); StubTypeCacheManager.Set(instance, typeItem); typeItem.PrepareData(instance); } else { cachedStub.PrepareData(instance); } return(instance); }
public CacheManagerTests() { _cacheKeyGenerator = new DefaultStubTypeCacheKeyGenerator(); _stubTypeMemoryCache = new StubTypeMemoryCache(_cacheKeyGenerator); _stubTypeCacheManager = new StubTypeCacheManager(_stubTypeMemoryCache); var stubManagerOptions = new StubManagerOptions() { AutoGenerateUnknown = true, AutoResolveByNaming = true }; _stubManager = new StubManager(stubManagerOptions, _stubTypeCacheManager, new DefaultStubDataMappingProfile()); }