public AssemblyDiversion(IDiversionDiviner diviner, IAssemblyInfo old, IAssemblyInfo @new) : base(old, @new) { _typeDiversions = new Lazy <IDiversions <ITypeInfo, ITypeDiversion> >(() => diviner.DivineDiversions(old.Types, @new.Types, (o, n) => new TypeDiversion(diviner, o, n)), true); _attributeDiversions = new Lazy <ICollectionDiversions <IAttributeInfo> >(() => diviner.DivineCollectionDiversions(old.Attributes, @new.Attributes), true); _hasDiverged = new Lazy <bool>(() => TypeDiversions.HasDiverged() || AttributeDiversions.HasDiverged() || base.HasDiverged(), true); }
public TypeDiversion(IDiversionDiviner diviner, ITypeInfo old, ITypeInfo @new) : base(old, @new) { _memberChanges = new Lazy <IDiversions <IMemberInfo> >(() => diviner.DivineDiversions(old.Members, @new.Members), true); _interfaceChanges = new Lazy <ICollectionDiversions <ITypeReference> >(() => diviner.DivineCollectionDiversions(old.Interfaces, @new.Interfaces), true); _attributeDiversions = new Lazy <ICollectionDiversions <IAttributeInfo> >(() => diviner.DivineCollectionDiversions(old.Attributes, @new.Attributes), true); _hasDiverged = new Lazy <bool>(() => base.HasDiverged() || MemberDiversions.HasDiverged() || InterfaceDiversions.HasDiverged() || AttributeDiversions.HasDiverged(), true); }