/// <summary> /// 获取所有特征 /// </summary> /// <param name="featMgr"><see cref="IFeatureManager"/></param> /// <param name="TopOnly">是否只获取顶级特征</param> /// <returns>特征</returns> public static IEnumerable <IFeature> GetFeaturesEx(this IFeatureManager featMgr, bool TopOnly = false) { var objarray = featMgr.GetFeatures(TopOnly) as object[]; var feats = objarray.Cast <IFeature>(); if (feats != null) { return(feats); } else { throw new FeatMgrFeatsNotFoundException("无特征集返回"); } }
/// <summary> /// Locate an extension at the given path by directly mapping path segments to physical directories. /// </summary> /// <param name="subpath">A path under the root directory</param> /// <returns>The extension information. null returned if extension does not exist</returns> public IExtensionInfo GetExtensionInfo(string subPath) { var manifest = _manifestBuilder.GetManifest(subPath); if (!manifest.Exists) { return(null); } var path = System.IO.Path.GetDirectoryName(subPath); var name = System.IO.Path.GetFileName(subPath); var extension = _fileProvider .GetDirectoryContents(path) .First(content => content.Name == name); return(new ExtensionInfo(extension, subPath, manifest, (ei) => { return _featureManager.GetFeatures(ei, manifest); })); }