/// <summary>
 /// Visits the given asset to collect references to asset part.
 /// </summary>
 /// <param name="asset">The asset to visit.</param>
 public void VisitAsset(AssetComposite asset)
 {
     Result.Clear();
     context = new AssetCompositeVisitorContext(asset.GetType());
     Visit(asset);
     context = null;
 }
 /// <summary>
 /// Visits the given asset to collect references to asset part.
 /// </summary>
 /// <param name="asset">The asset to visit.</param>
 public void VisitAsset(AssetComposite asset)
 {
     Result.Clear();
     context = new AssetCompositeVisitorContext(asset.GetType());
     Visit(asset);
     context = null;
 }
Ejemplo n.º 3
0
        public static void FixupAssetPartReferences(AssetComposite assetComposite, Func <object, object> resolver)
        {
            var references = Visit(assetComposite);

            // Reverse the list, so that we can still properly update everything
            // (i.e. if we have a[0], a[1], a[1].Test, we have to do it from back to front to be valid at each step)
            references.Reverse();

            foreach (var reference in references)
            {
                var realPart = resolver(reference.AssetPart);
                reference.Path.Apply(assetComposite, MemberPathAction.ValueSet, realPart);
            }
        }
 /// <summary>
 /// Visits the given asset to collect references to asset part.
 /// </summary>
 /// <param name="asset">The asset to visit.</param>
 public void VisitAsset(AssetComposite asset)
 {
     Result.Clear();
     Visit(asset);
 }
Ejemplo n.º 5
0
        private static List <AssetCompositeReferenceAnalysis.AssetPartReference> Visit(AssetComposite assetComposite)
        {
            if (assetComposite == null)
            {
                throw new ArgumentNullException(nameof(assetComposite));
            }

            var entityReferenceVistor = new AssetCompositeReferenceAnalysis();

            entityReferenceVistor.VisitAsset(assetComposite);
            return(entityReferenceVistor.Result);
        }