public OpcServerCategory[] GetCategories(Guid clsid) { IEnumGUID catEnumerator = null; try { catEnumerator = _catInformation.EnumImplCategoriesOfClass(clsid); var catids = new Guid[MaxItemsPerRequest]; int fetched; var result = new List <OpcServerCategory>(); do { catEnumerator.Next(catids.Length, catids, out fetched); for (var i = 0; i < fetched; i++) { var catid = catids[i]; var opcServerCategory = OpcServerCategory.Get(catid); if (opcServerCategory != null) { result.Add(opcServerCategory); } } } while (fetched != 0); return(result.ToArray()); } finally { if (catEnumerator != null) { Marshal.ReleaseComObject(catEnumerator); } } }
private Guid[] GetCategoriesGuids(OpcServerCategory[] categories) { return categories.Select(c => c.CATID).ToArray(); }