protected override void ExportValue(ExportContext context, object value, JsonWriter writer) { Debug.Assert(context != null); Debug.Assert(value != null); Debug.Assert(writer != null); if (_properties.Count == 0) { writer.WriteString(value.ToString()); return; } ObjectReferenceTracker objectReferenceTracker = null; try { writer.WriteStartObject(); foreach (PropertyDescriptor property in _properties) { object value2 = property.GetValue(value); if (!JsonNull.LogicallyEquals(value2)) { writer.WriteMember(property.Name); if (objectReferenceTracker == null) { objectReferenceTracker = TrackObject(context, value); } context.Export(value2, writer); } } writer.WriteEndObject(); } finally { objectReferenceTracker?.Pop(value); } }
protected override void ExportValue(ExportContext context, object value, JsonWriter writer) { Debug.Assert(context != null); Debug.Assert(value != null); Debug.Assert(writer != null); if (_properties.Count == 0) { writer.WriteString(value.ToString()); } else { ObjectReferenceTracker tracker = null; try { writer.WriteStartObject(); foreach (PropertyDescriptor property in _properties) { object propertyValue = property.GetValue(value); if (!JsonNull.LogicallyEquals(propertyValue)) { writer.WriteMember(property.Name); if (tracker == null) { // // We are about to enter a deeper scope so // start tracking the current object being // exported. This will help to detect // recursive references that may occur // through this exporter deeper in the tree. // tracker = TrackObject(context, value); } context.Export(propertyValue, writer); } } writer.WriteEndObject(); } finally { if (tracker != null) { tracker.Pop(value); } } } }
private static ObjectReferenceTracker TrackObject(ExportContext context, object value) { Debug.Assert(context != null); Debug.Assert(value != null); Type typeFromHandle = typeof(ComponentExporter); ObjectReferenceTracker objectReferenceTracker = (ObjectReferenceTracker)context.Items[typeFromHandle]; if (objectReferenceTracker == null) { objectReferenceTracker = new ObjectReferenceTracker(); context.Items.Add(typeFromHandle, objectReferenceTracker); } objectReferenceTracker.PushNew(value); return(objectReferenceTracker); }
private static ObjectReferenceTracker TrackObject(ExportContext context, object value) { Debug.Assert(context != null); Debug.Assert(value != null); // // Get the object reference tracker from the current context. If // it's not there, then create one. // Type key = typeof(ComponentExporter); ObjectReferenceTracker tracker = (ObjectReferenceTracker)context.Items[key]; if (tracker == null) { tracker = new ObjectReferenceTracker(); context.Items.Add(key, tracker); } tracker.PushNew(value); return(tracker); }
public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log, EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker) { //DownloadedFileNames=new List<string>(); base.InitializeTask(connections, variableDispenser, events, log, eventInfos, logEntryInfos, refTracker); }
public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log, EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker) { base.InitializeTask(connections, variableDispenser, events, log, eventInfos, logEntryInfos, refTracker); }
private static ObjectReferenceTracker TrackObject(ExportContext context, object value) { Debug.Assert(context != null); Debug.Assert(value != null); // // Get the object reference tracker from the current context. If // it's not there, then create one. // Type key = typeof(ComponentExporter); ObjectReferenceTracker tracker = (ObjectReferenceTracker) context.Items[key]; if (tracker == null) { tracker = new ObjectReferenceTracker(); context.Items.Add(key, tracker); } tracker.PushNew(value); return tracker; }
/// <summary>Initializes the task.</summary> /// <param name="connections">The connections.</param> /// <param name="variableDispenser">The variables.</param> /// <param name="events">The event subsystem.</param> /// <param name="log">The logging subsystem.</param> /// <param name="eventInfos">The event info subsystem.</param> /// <param name="logEntryInfos">The log entry subsystem.</param> /// <param name="refTracker">Reference tracker.</param> /// <remarks> /// Derived types should not override this method. Use <see cref="InitializeCore"/> instead. /// </remarks> public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log, EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker) { var context = new TaskInitializeContext() { Connections = connections, Log = log, Variables = variableDispenser, Events = events, EventInfos = eventInfos, LogEntryInfos = logEntryInfos, ReferenceTracker = refTracker }; //Set the connections for later use Connections = connections; InitializeCore(context); }
public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log, EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker) { Attachments = new List <Attachment>(); }
/// <summary> /// Initializes a new instance of the task at design time. /// </summary> /// <param name="connections"></param> /// <param name="variableDispenser"></param> /// <param name="events"></param> /// <param name="log"></param> /// <param name="eventInfos"></param> /// <param name="logEntryInfos"></param> /// <param name="refTracker"></param> public override void InitializeTask(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents events, IDTSLogging log, EventInfos eventInfos, LogEntryInfos logEntryInfos, ObjectReferenceTracker refTracker) { // Initialize public members. this.ApplicationName = String.Empty; this.IsVerbose = true; // Retrieve system variables. this.ResolveSystemVariables(ref variableDispenser); base.InitializeTask(connections, variableDispenser, events, log, eventInfos, logEntryInfos, refTracker); }
private static ObjectReferenceTracker TrackObject(ExportContext context, object value) { Type key = typeof(ComponentExporter); ObjectReferenceTracker tracker = (ObjectReferenceTracker) context.Items[key]; if (tracker == null) { tracker = new ObjectReferenceTracker(); context.Items.Add(key, tracker); } tracker.PushNew(value); return tracker; }