About the Persisting data by implementing an extension using add-ins Sample
[C#]
LogExtension.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.Collections;
using System.Reflection;
namespace PersistExtensionAddIn
{
public class LogExtension : ESRI.ArcGIS.Desktop.AddIns.Extension
{
Dictionary<string, string> _log;
public LogExtension()
{
}
protected override void OnStartup()
{
WireDocumentEvents();
}
private void WireDocumentEvents()
{
// Named event handler
ArcMap.Events.OpenDocument += new ESRI.ArcGIS.ArcMapUI.IDocumentEvents_OpenDocumentEventHandler(Events_OpenDocument);
}
void Events_OpenDocument()
{
string logText = "Document was saved by " + _log["userName"]
+ " at " + _log["time"];
LogMessage(logText);
}
//Get called when saving document.
protected override void OnSave(Stream outStrm)
{
// Override OnSave and uses a binary formatter to serialize the log.
Dictionary<string, string> log = new Dictionary<string, string>();
log.Add("userName", Environment.UserName);
log.Add("time", DateTime.Now.ToLongTimeString());
var bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
bf.Serialize(outStrm, log);
}
//Get called when opening a document with persisted stream.
protected override void OnLoad(Stream inStrm)
{
// Override OnLoad and uses a binary formatter to deserialize the log.
var bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
_log = (Dictionary<string, string>)bf.Deserialize(inStrm);
}
private void LogMessage(string message)
{
System.Windows.Forms.MessageBox.Show(message);
}
}
}
[Visual Basic .NET]
LogExtension.vb
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Runtime.Serialization
Imports System.Collections
Imports System.Reflection
Namespace PersistExtensionAddIn
Public Class LogExtension
Inherits ESRI.ArcGIS.Desktop.AddIns.Extension
Private _log As Dictionary(Of String, String)
Public Sub New()
End Sub
Protected Overrides Sub OnStartup()
WireDocumentEvents()
End Sub
Private Sub WireDocumentEvents()
' Named event handler
AddHandler ArcMap.Events.OpenDocument, AddressOf Events_OpenDocument
End Sub
Private Sub Events_OpenDocument()
Dim logText As String = "Document was saved by " & _log("userName") & " at " & _log("time")
LogMessage(logText)
End Sub
'Get called when saving document.
Protected Overrides Sub OnSave(ByVal outStrm As Stream)
' Override OnSave and uses a binary formatter to serialize the log.
Dim log As New Dictionary(Of String, String)()
log.Add("userName", Environment.UserName)
log.Add("time", DateTime.Now.ToLongTimeString())
Dim bf = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
bf.Serialize(outStrm, log)
End Sub
'Get called when opening a document with persisted stream.
Protected Overrides Sub OnLoad(ByVal inStrm As Stream)
' Override OnLoad and uses a binary formatter to deserialize the log.
Dim bf = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
_log = CType(bf.Deserialize(inStrm), Dictionary(Of String, String))
End Sub
Private Sub LogMessage(ByVal message As String)
System.Windows.Forms.MessageBox.Show(message)
End Sub
End Class
End Namespace