I have created multiple ESRI addins, where the same code is used. I have created a class library, which I can reference rather than duplicating code. I have the following in my ESRI addin code which works fine
IMxDocument mxdoc = ArcMap.Application.Document as IMxDocument;
However if the same code is used in the class library, I am unable to build the dll. As the class library does not know about ArcMap,
I have tried
ESRI.ArcGIS.ArcMap.Application arcmapApp = new ESRI.ArcGIS.ArcMap.Application();
IMxDocument mxdoc = arcmapApp.Document as IMxDocument;
However when I run the code in my addin (that references my Class Library), i get the following error
What is the correct way of referencing ArcMap in a class library?
Answer
I have got this to work, but not using AppRot (one problem is that there could be multiple instances of ArcMap and ArcCatalog), but to just pass the ArcGIS application object from the addin.
Within Addin
public ESRI.ArcGIS.ArcMap.Application arcmap = ArcMap.Application as ESRI.ArcGIS.ArcMap.Application;
Within class library
public bool isEditing(ESRI.ArcGIS.ArcMap.Application arcMap)
{
UID editorUID = new UIDClass();
editorUID.Value = "esriEditor.Editor";
IExtension editor = arcMap.FindExtensionByCLSID(editorUID);// (editorUID);// '//as IEditor3;
IEditor e = editor as IEditor;
if (e.EditState == esriEditState.esriStateNotEditing)
{
return false;
}
else
{
return true;
}
}
No comments:
Post a Comment