protected override T GetFirstMemberOrDefault <T>(object obj, MemberNamePredicate predicate) { return(GetFirstDotNetPropertyOrDefault <T>(obj, predicate) ?? GetFirstDotNetMethodOrDefault <T>(obj, predicate) ?? GetFirstDotNetEventOrDefault <T>(obj, predicate) ?? GetFirstDynamicMemberOrDefault <T>(obj, predicate)); }
private T GetDotNetPropertyImpl <T>(object obj, string propertyName, MemberNamePredicate predicate = null) where T : PSMemberInfo { bool lookingForProperties = typeof(T).IsAssignableFrom(typeof(PSProperty)); bool lookingForParameterizedProperties = IsTypeParameterizedProperty(typeof(T)); if (!lookingForProperties && !lookingForParameterizedProperties) { return(null); } CacheTable typeTable = _isStatic ? GetStaticPropertyReflectionTable((Type)obj) : GetInstancePropertyReflectionTable(obj.GetType()); object entry = typeTable[propertyName]; return(entry switch { null => null, PropertyCacheEntry cacheEntry when lookingForProperties => new PSProperty( cacheEntry.member.Name, this, obj, cacheEntry) as T, ParameterizedPropertyCacheEntry paramCacheEntry when lookingForParameterizedProperties => new PSParameterizedProperty( paramCacheEntry.propertyName, this, obj, paramCacheEntry) as T, _ => null, });
private static T DotNetGetFirstMemberOrDefaultDelegate <T>(PSObject msjObj, MemberNamePredicate predicate) where T : PSMemberInfo { Adapter adapter = msjObj.InternalBaseDotNetAdapter; if (adapter is null || adapter.GetType() == typeof(DotNetAdapter)) { adapter = s_customInstance; } return(adapter.BaseGetFirstMemberOrDefault <T>(msjObj.ImmediateBaseObject, predicate)); }
/// <summary> /// Returns the first PSMemberInfo whose name matches the specified <see cref="MemberNamePredicate"/>. /// </summary> protected override T GetFirstMemberOrDefault <T>(object obj, MemberNamePredicate predicate) { bool lookingForProperties = typeof(T).IsAssignableFrom(typeof(PSProperty)); bool lookingForParameterizedProperties = typeof(T).IsAssignableFrom(typeof(PSParameterizedProperty)); if (lookingForProperties || lookingForParameterizedProperties) { foreach (ComProperty prop in _comTypeInfo.Properties.Values) { if (prop.IsParameterized && lookingForParameterizedProperties && predicate(prop.Name)) { return(new PSParameterizedProperty(prop.Name, this, obj, prop) as T); } if (lookingForProperties && predicate(prop.Name)) { return(new PSProperty(prop.Name, this, obj, prop) as T); } } } bool lookingForMethods = typeof(T).IsAssignableFrom(typeof(PSMethod)); if (lookingForMethods) { foreach (ComMethod method in _comTypeInfo.Methods.Values) { if (predicate(method.Name)) { var mshMethod = new PSMethod(method.Name, this, obj, method); return(mshMethod as T); } } } return(null); }
protected override PSProperty DoGetFirstPropertyOrDefault(object obj, MemberNamePredicate predicate) { PSAdaptedProperty property = null; try { property = _externalAdapter.GetFirstPropertyOrDefault(obj, predicate); } catch (Exception exception) { throw new ExtendedTypeSystemException( "PSPropertyAdapter.GetProperty", exception, ExtendedTypeSystem.GetProperty, nameof(predicate), obj.ToString()); } if (property != null) { InitializeProperty(property, obj); } return(property); }
/// <inheritdoc /> public override PSAdaptedProperty GetFirstPropertyOrDefault(object baseObject, MemberNamePredicate predicate) { if (predicate is null) { throw new PSArgumentNullException(nameof(predicate)); } // baseObject should never be null CimInstance cimInstance = baseObject as CimInstance; if (cimInstance is null) { string msg = string.Format( CultureInfo.InvariantCulture, CimInstanceTypeAdapterResources.BaseObjectNotCimInstance, "baseObject", typeof(CimInstance).ToString()); throw new PSInvalidOperationException(msg); } if (predicate(RemotingConstants.ComputerNameNoteProperty)) { PSAdaptedProperty prop = GetPSComputerNameAdapter(cimInstance); return(prop); } foreach (CimProperty cimProperty in cimInstance.CimInstanceProperties) { if (cimProperty != null && predicate(cimProperty.Name)) { PSAdaptedProperty prop = GetCimPropertyAdapter(cimProperty, baseObject, cimProperty.Name); return(prop); } } return(null); }
/// <summary> /// Returns a property if it's name matches the specified <see cref="MemberNamePredicate"/>, otherwise null. /// </summary> /// <returns>An adapted property if the predicate matches, or <see langword="null"/>.</returns> public virtual PSAdaptedProperty GetFirstPropertyOrDefault(object baseObject, MemberNamePredicate predicate) { foreach (var property in GetProperties(baseObject)) { if (predicate(property.Name)) { return(property); } } return(null); }
private static T DotNetGetFirstMemberOrDefaultDelegate <T>(PSObject msjObj, MemberNamePredicate predicate) where T : PSMemberInfo { throw null; }