void InitializeExtensionChain() { // Create an initial empty extension chain. This avoid crashes in case a call to SupportsObject ends // calling methods from the extension var tempExtensions = new List <WorkspaceObjectExtension> (); tempExtensions.AddRange(CreateDefaultExtensions().Reverse()); extensionChain = ExtensionChain.Create(tempExtensions.ToArray()); foreach (var e in tempExtensions) { e.Init(this); } // Collect extensions that support this object var extensions = new List <WorkspaceObjectExtension> (); foreach (ProjectModelExtensionNode node in GetModelExtensions(extensionContext)) { if (node.CanHandleObject(this)) { var ext = node.CreateExtension(); if (ext.SupportsObject(this)) { ext.SourceExtensionNode = node; extensions.Add(ext); } } } foreach (var e in tempExtensions) { e.Dispose(); } // Now create the final extension chain extensions.Reverse(); var defaultExts = CreateDefaultExtensions().ToList(); defaultExts.Reverse(); extensions.AddRange(defaultExts); extensionChain = ExtensionChain.Create(extensions.ToArray()); extensionChain.SetDefaultInsertionPosition(defaultExts.FirstOrDefault()); foreach (var e in extensions) { e.Init(this); } itemExtension = ExtensionChain.GetExtension <WorkspaceObjectExtension> (); foreach (var e in extensions) { e.OnExtensionChainCreated(); } }
protected override void OnExtensionChainInitialized() { itemExtension = ExtensionChain.GetExtension <SolutionExtension> (); base.OnExtensionChainInitialized(); if (!loadingFromConstructor) { NotifyItemReady(); } }
protected override void OnExtensionChainInitialized() { itemExtension = ExtensionChain.GetExtension <WorkspaceItemExtension> (); base.OnExtensionChainInitialized(); }
protected override void OnExtensionChainInitialized() { itemExtension = ExtensionChain.GetExtension <WorkspaceItemExtension> (); base.OnExtensionChainInitialized(); fileStatusTracker.TrackFileChanges(); }