public static byte[] ReadObjectToBytes(object pObject)
{
byte[] defaultBytes = null;
if (pObject is IPersistStream)
{
IPersistStream persistStream = pObject as IPersistStream;
IObjectStream pObjStream = new ObjectStreamClass();
IMemoryBlobStream pBlobStream = new MemoryBlobStreamClass();
pObjStream.Stream = pBlobStream;
persistStream.Save(pObjStream, 0);
int n = (int)pBlobStream.Size;
defaultBytes = new byte[n];
object obj2 = null;
IMemoryBlobStreamVariant pBlobVariant = pBlobStream as IMemoryBlobStreamVariant;
pBlobVariant.ExportToVariant(out obj2);
defaultBytes = (byte[])obj2;
}
return defaultBytes;
}
public static void ReadObjectFromBytes(byte[] bytes, object pObject)
{
if (pObject is IPersistStream)
{
IPersistStream pPersistStream = pObject as IPersistStream;
IMemoryBlobStream2 pBlobStream = new MemoryBlobStreamClass();
pBlobStream.ImportFromMemory(ref bytes[0], (uint)bytes.Length);
IObjectStream pObjStream = new ObjectStreamClass();
pObjStream.Stream = pBlobStream;
pPersistStream.Load(pObjStream);
}
}
public static byte[] ReadEsriBlobToBytes(object blobValue)
{
if (blobValue == null || blobValue == DBNull.Value)
{
return null;
}
IMemoryBlobStream2 pBlobStream = new MemoryBlobStreamClass();
pBlobStream = (IMemoryBlobStream2)blobValue;
int n = (int)pBlobStream.Size;
byte[] bytes = new byte[n];
object obj = null;
IMemoryBlobStreamVariant pBlobVariant = pBlobStream as IMemoryBlobStreamVariant;
pBlobVariant.ExportToVariant(out obj);
bytes = (byte[])obj;
return bytes;
}
public static bool WriteObj(string FilePath, object pObject)
{
bool result = false;
if (pObject is IPersistStream)
{
IPersistStream persistStream = pObject as IPersistStream;
IObjectStream pObjStream = new ObjectStreamClass();
IMemoryBlobStream pBlobStream = new MemoryBlobStreamClass();
pObjStream.Stream = pBlobStream;
persistStream.Save(pObjStream, 0);
try
{
pBlobStream.SaveToFile(FilePath);
result = true;
}
catch { }
}
return result;
}
public static string SerialsAEObject(IWorkspace pWorkspace)
{
try
{
IXMLStream pStream = new XMLStreamClass();
IXMLWriter pWriter = new XMLWriterClass();
pWriter.WriteTo(pStream as IStream);
IXMLSerializer pSerializer = new XMLSerializerClass();
pSerializer.WriteObject(pWriter, null, null, "", "", pWorkspace.ConnectionProperties);
return pStream.SaveToString();
}
catch (Exception ex)
{
return "";
}
}
public static IWorkspace DeSerialsAEObject(string strObj,string PassWord)
{
try
{
IXMLStream pStream = new XMLStreamClass();
pStream.LoadFromString(strObj);
IXMLReader pReader = new XMLReaderClass();
pReader.ReadFrom(pStream as IStream);
IXMLSerializer pSerializer = new XMLSerializerClass();
IPropertySet pPropSet = pSerializer.ReadObject(pReader, null, null) as IPropertySet;
pPropSet.SetProperty("PASSWORD",PassWord);
IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();
IWorkspace pWS = workspaceFactory.Open(pPropSet, 0);
return pWS;
}
catch (Exception ex)
{
return null;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?