在SP3D中,選中一個工廠對象,如何使用代碼擷取其類得接口及屬性呢?
-
通過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運作結果如下所示:
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運作結果如下所示:
微信公衆号 數智化工