public virtual void VisitDictionary(object dictionary, DictionaryDescriptor descriptor) { foreach (var keyValue in descriptor.GetEnumerator(dictionary)) { var key = keyValue.Key; var keyDescriptor = TypeDescriptorFactory.Find(keyValue.Key?.GetType() ?? descriptor.KeyType); var value = keyValue.Value; var valueDescriptor = TypeDescriptorFactory.Find(keyValue.Value?.GetType() ?? descriptor.ValueType); CurrentPath.Push(descriptor, key); VisitDictionaryKeyValue(dictionary, descriptor, key, keyDescriptor, value, valueDescriptor); CurrentPath.Pop(); } }
/// <inheritdoc /> public virtual void VisitCollection(IEnumerable collection, CollectionDescriptor descriptor) { var i = 0; // Make a copy in case VisitCollectionItem mutates something var items = collection.Cast <object>().ToList(); foreach (var item in items) { CurrentPath.Push(descriptor, i); VisitCollectionItem(collection, descriptor, i, item, TypeDescriptorFactory.Find(item?.GetType() ?? descriptor.ElementType)); CurrentPath.Pop(); i++; } }
/// <summary> /// Initialize the tests. /// </summary> public virtual void Initialize() { TypeFactory = new TypeDescriptorFactory(); var myClassDesc = TypeFactory.Find(typeof(MyClass)); var myStructDesc = TypeFactory.Find(typeof(MyStruct)); ListClassDesc = (CollectionDescriptor)TypeFactory.Find(typeof(List<MyClass>)); MapClassDesc = (DictionaryDescriptor)TypeFactory.Find(typeof(Dictionary<string, MyClass>)); MemberValue = myClassDesc.Members.FirstOrDefault(member => member.Name == "Value"); MemberSub = myClassDesc.Members.FirstOrDefault(member => member.Name == "Sub"); MemberStruct = myClassDesc.Members.FirstOrDefault(member => member.Name == "Struct"); MemberSubs = myClassDesc.Members.FirstOrDefault(member => member.Name == "Subs"); MemberMaps = myClassDesc.Members.FirstOrDefault(member => member.Name == "Maps"); MemberX = myStructDesc.Members.FirstOrDefault(member => member.Name == "X"); MemberClass = myStructDesc.Members.FirstOrDefault(member => member.Name == "Class"); }
/// <inheritdoc /> public virtual void VisitDictionary(object dictionary, DictionaryDescriptor descriptor) { // Make a copy in case VisitCollectionItem mutates something var items = descriptor.GetEnumerator(dictionary).ToList(); foreach (var keyValue in items) { var key = keyValue.Key; var keyDescriptor = TypeDescriptorFactory.Find(keyValue.Key?.GetType() ?? descriptor.KeyType); var value = keyValue.Value; var valueDescriptor = TypeDescriptorFactory.Find(keyValue.Value?.GetType() ?? descriptor.ValueType); CurrentPath.Push(descriptor, key); VisitDictionaryKeyValue(dictionary, descriptor, key, keyDescriptor, value, valueDescriptor); CurrentPath.Pop(); } }
public override void Initialize() { base.Initialize(); TypeFactory = new TypeDescriptorFactory(); var assetDesc = TypeFactory.Find(typeof(TestAssetUpdate)); memberMyClass = assetDesc.Members.FirstOrDefault(member => member.Name == "MyClass"); if (session != null) { session.Dispose(); dependencyManager.Dispose(); } package = new Package(); session = new PackageSession(package); dependencyManager = new AssetDependencyManager(session); assetUpdater = new AssetUpdater(dependencyManager); }
public virtual void VisitCollection(IEnumerable collection, CollectionDescriptor descriptor) { int i = 0; foreach (var item in collection) { CurrentPath.Push(descriptor, i); VisitCollectionItem(collection, descriptor, i, item, item == null ? null : TypeDescriptorFactory.Find(item.GetType())); CurrentPath.Pop(); i++; } }