天天看點

SP3D開發-使用代碼擷取類的接口及屬性

在SP3D中,選中一個工廠對象,如何使用代碼擷取其類得接口及屬性呢?

  1. 通過MetadataManager擷取工廠對象全部接口

    具體思路是通過ClientServiceProvider.WorkingSet擷取目前的連接配接資訊,通過連接配接資訊擷取其MetadataManager,通過MetadataManager擷取所選對象類的具體資訊ClassInformation ,通過ClassInformation 擷取接口資訊,代碼如下所示:

SP3DConnection oConnection =ClientServiceProvider.WorkingSet.ActiveConnection;

SelectSet oSet = ClientServiceProvider.SelectSet;

BusinessObject oBo = oSet.SelectedObjects[0];

MetadataManager oMetadateMgr = oConnection.MetadataMgr;

ClassInformation oCI = oMetadateMgr.

GetClassInfo(oBo.UserClassInfo.Name, oBo.UserClassInfo.Namespace);

ReadOnlyDictionary oInterfaceColl = oCI.Interfaces;

string interfaceName = “”;

foreach (InterfaceInformation oIf in oInterfaceColl.Values)

{

try

{

interfaceName = “\r\n” + interfaceName + oIf.Name ;

}

catch { }

}

return interfaceName;

使用3DBox運作結果如下所示:

SP3D開發-使用代碼擷取類的接口及屬性

2、擷取工廠對象得全部接口及接口下的屬性

在上面的代碼中增加ReadOnlyDictionary properties = oIf.Properties;擷取的某個接口的所有屬性,再通過周遊擷取屬性名稱,具體代碼如下:

SP3DConnection oConnection = ClientServiceProvider.WorkingSet.ActiveConnection;

SelectSet oSet = ClientServiceProvider.SelectSet;

BusinessObject oBo = oSet.SelectedObjects[0];

MetadataManager oMetadateMgr = oConnection.MetadataMgr;

ClassInformation oCI = oMetadateMgr.GetClassInfo(oBo.UserClassInfo.Name, oBo.UserClassInfo.Namespace);

ReadOnlyDictionary oInterfaceColl = oCI.Interfaces;

string interfaceName = “”;

foreach (InterfaceInformation oIf in oInterfaceColl.Values)

{

try

{

interfaceName = “\r\n” + interfaceName + oIf.Name ;

ReadOnlyDictionary properties = oIf.Properties;

foreach (PropertyInformation opp in properties.Values)

{

try

{

interfaceName = “\r\n” + interfaceName + opp.Name;

}

catch { }

}

}

catch { }

}

return interfaceName;

使用3DBox運作結果如下所示:

SP3D開發-使用代碼擷取類的接口及屬性

微信公衆号 數智化工

繼續閱讀