public static string GetImageName(DmdPropertyInfo property) { var method = property.GetGetMethod(DmdGetAccessorOptions.All) ?? property.GetSetMethod(DmdGetAccessorOptions.All); if ((object)method == null) { return(PredefinedDbgValueNodeImageNames.Property); } switch (method.Attributes & DmdMethodAttributes.MemberAccessMask) { case DmdMethodAttributes.PrivateScope: return(PredefinedDbgValueNodeImageNames.PropertyCompilerControlled); case DmdMethodAttributes.Private: return(PredefinedDbgValueNodeImageNames.PropertyPrivate); case DmdMethodAttributes.FamANDAssem: return(PredefinedDbgValueNodeImageNames.PropertyFamilyAndAssembly); case DmdMethodAttributes.Assembly: return(PredefinedDbgValueNodeImageNames.PropertyAssembly); case DmdMethodAttributes.Family: return(PredefinedDbgValueNodeImageNames.PropertyFamily); case DmdMethodAttributes.FamORAssem: return(PredefinedDbgValueNodeImageNames.PropertyFamilyOrAssembly); case DmdMethodAttributes.Public: return(PredefinedDbgValueNodeImageNames.PropertyPublic); default: return(PredefinedDbgValueNodeImageNames.Property); } }
void Format(DmdMethodBase method, DmdPropertyInfo property, AccessorKind accessorKind) { if (property.SetMethod is null) { OutputWrite(Keyword_ReadOnly, DbgTextColor.Keyword); WriteSpace(); } OutputWrite(Keyword_Property, DbgTextColor.Keyword); WriteSpace(); WriteAccessor(accessorKind); WriteToken(method); if (DeclaringTypes) { FormatType(property.DeclaringType !); WritePeriod(); } WriteIdentifier(property.Name, TypeFormatterUtils.GetColor(property)); WriteToken(property); WriteGenericArguments(method); WriteMethodParameterList(method, MethodParenOpen, MethodParenClose); WriteReturnType(method); WriteOffset(); }
protected override void FormatPropertyName(IDbgTextWriter output, DmdPropertyInfo property) { var name = Formatters.CSharp.CSharpTypeFormatter.GetFormattedIdentifier(property.Name); var color = MemberUtils.GetColor(property); output.Write(color, name); }
protected override void FormatPropertyName(ITextColorWriter output, DmdPropertyInfo property) { var name = Formatters.VisualBasic.VisualBasicTypeFormatter.GetFormattedIdentifier(property.Name); var color = MemberUtils.GetColor(property); output.Write(color, name); }
void Format(DmdMethodBase method, DmdPropertyInfo property, AccessorKind accessorKind) { if (ReturnTypes) { FormatReturnType(property.PropertyType, TypeFormatterUtils.IsReadOnlyProperty(property)); WriteSpace(); } if (DeclaringTypes) { FormatType(property.DeclaringType); WritePeriod(); } if (property.GetIndexParameters().Count != 0) { OutputWrite(Keyword_this, BoxedTextColor.Keyword); WriteToken(property); WriteMethodParameterListCore(method, GetAllMethodParameterTypes(property.GetMethodSignature()), IndexerParenOpen, IndexerParenClose, showParameterTypes: true, showParameterNames: false, showParameterValues: false); } else { WriteIdentifier(property.Name, TypeFormatterUtils.GetColor(property)); WriteToken(property); } WriteAccessor(accessorKind); WriteToken(method); WriteGenericArguments(method); WriteMethodParameterList(method, MethodParenOpen, MethodParenClose); WriteOffset(); }
public static bool IsMatch(DmdPropertyInfo property, DmdType returnType) { if ((object)returnType != null) { var comparer = new DmdSigComparer(DmdSigComparerOptions.CheckTypeEquivalence | DmdMemberInfoEqualityComparer.DefaultTypeOptions); if (!comparer.Equals(property.PropertyType, returnType)) { return(false); } } return(true); }
DmdPropertyInfo[] ReadDeclaredProperties_COMThread(DmdType declaringType, DmdType reflectedType) { reader.Dispatcher.VerifyAccess(); var tokens = MDAPI.GetPropertyTokens(reader.MetaDataImport, (uint)MetadataToken); if (tokens.Length == 0) { return(Array.Empty <DmdPropertyInfo>()); } var properties = new DmdPropertyInfo[tokens.Length]; for (int i = 0; i < properties.Length; i++) { uint rid = tokens[i] & 0x00FFFFFF; properties[i] = reader.CreatePropertyDef_COMThread(rid, declaringType, reflectedType); } return(properties); }
public override DmdPropertyInfo[] ReadDeclaredProperties(DmdType declaringType, DmdType reflectedType) { var mapRid = reader.Metadata.GetPropertyMapRid(Rid); var ridList = reader.Metadata.GetPropertyRidList(mapRid); if (ridList.Count == 0) { return(Array.Empty <DmdPropertyInfo>()); } var properties = new DmdPropertyInfo[ridList.Count]; for (int i = 0; i < properties.Length; i++) { uint rid = ridList[i]; properties[i] = reader.CreatePropertyDef(rid, declaringType, reflectedType); } return(properties); }
public static bool IsMatch(DmdPropertyInfo property, DmdBindingFlags bindingAttr) { var attr = DmdBindingFlags.Default; if (property.GetMethod?.IsPublic == true || property.SetMethod?.IsPublic == true) { attr |= DmdBindingFlags.Public; } else { attr |= DmdBindingFlags.NonPublic; } if (property.GetMethod?.IsStatic == true || property.SetMethod?.IsStatic == true) { attr |= DmdBindingFlags.Static; } else { attr |= DmdBindingFlags.Instance; } if ((object)property.ReflectedType != property.DeclaringType) { var method = property.GetMethod; if ((object)method != null) { if (method.IsStatic) { if (method.IsPrivate) { return(false); } attr |= DmdBindingFlags.FlattenHierarchy; } else { if (!(method.IsVirtual || method.IsAbstract) && method.IsPrivate) { return(false); } } } } return((attr & bindingAttr) == attr); }
public static DbgTextColor GetColor(DmdPropertyInfo property) => GetColor(property.GetMethod ?? property.SetMethod, DbgTextColor.StaticProperty, DbgTextColor.InstanceProperty);
protected abstract void FormatPropertyName(IDbgTextWriter output, DmdPropertyInfo property);
public static DbgTextColor GetColor(DmdPropertyInfo property) { var methodSig = (property.GetGetMethod(DmdGetAccessorOptions.All) ?? property.GetSetMethod(DmdGetAccessorOptions.All))?.GetMethodSignature() ?? property.GetMethodSignature(); return(methodSig.HasThis ? DbgTextColor.InstanceProperty : DbgTextColor.StaticProperty); }
protected override void FormatReturnValueMethodName(DbgEvaluationInfo evalInfo, IDbgTextWriter output, DbgValueFormatterTypeOptions typeOptions, DbgValueFormatterOptions valueOptions, CultureInfo cultureInfo, DmdMethodBase method, DmdPropertyInfo property) { var typeFormatter = new Formatters.VisualBasic.VisualBasicTypeFormatter(output, typeOptions.ToTypeFormatterOptions(), null); typeFormatter.Format(method.DeclaringType, null); var valueFormatter = new Formatters.VisualBasic.VisualBasicPrimitiveValueFormatter(output, valueOptions.ToValueFormatterOptions(), cultureInfo); output.Write(DbgTextColor.Operator, "."); if ((object)property != null) { output.Write(MemberUtils.GetColor(property), Formatters.VisualBasic.VisualBasicTypeFormatter.GetFormattedIdentifier(property.Name)); valueFormatter.WriteTokenComment(property.MetadataToken); output.Write(DbgTextColor.Operator, "."); output.Write(DbgTextColor.Keyword, "Get"); valueFormatter.WriteTokenComment(method.MetadataToken); } else { var operatorInfo = Formatters.VisualBasic.Operators.TryGetOperatorInfo(method.Name); if (operatorInfo != null && method is DmdMethodInfo methodInfo) { for (int i = 0; i < operatorInfo.Length; i++) { if (i > 0) { output.Write(DbgTextColor.Text, " "); } var s = operatorInfo[i]; output.Write('A' <= s[0] && s[0] <= 'Z' ? DbgTextColor.Keyword : DbgTextColor.Operator, s); } WriteGenericMethodArguments(output, method, typeFormatter); } else { output.Write(TypeFormatterUtils.GetColor(method, canBeModule: true), Formatters.VisualBasic.VisualBasicTypeFormatter.GetFormattedIdentifier(method.Name)); valueFormatter.WriteTokenComment(method.MetadataToken); WriteGenericMethodArguments(output, method, typeFormatter); } } }
public static object GetColor(DmdPropertyInfo property) => GetColor(property.GetMethod ?? property.SetMethod, BoxedTextColor.StaticProperty, BoxedTextColor.InstanceProperty);
protected override void FormatReturnValueMethodName(ITextColorWriter output, DmdMethodBase method, DmdPropertyInfo property) { const Formatters.TypeFormatterOptions options = Formatters.TypeFormatterOptions.IntrinsicTypeKeywords | Formatters.TypeFormatterOptions.Namespaces; var formatter = new Formatters.CSharp.CSharpTypeFormatter(output, options, null); formatter.Format(method.DeclaringType, null); output.Write(BoxedTextColor.Operator, "."); if ((object)property != null) { output.Write(MemberUtils.GetColor(property), Formatters.CSharp.CSharpTypeFormatter.GetFormattedIdentifier(property.Name)); output.Write(BoxedTextColor.Operator, "."); output.Write(BoxedTextColor.Keyword, "get"); } else { var methodColor = MemberUtils.GetColor(method, canBeModule: false); if (TryGetMethodName(method.Name, out var containingMethodName, out var localFunctionName)) { output.Write(methodColor, Formatters.CSharp.CSharpTypeFormatter.GetFormattedIdentifier(containingMethodName)); output.Write(BoxedTextColor.Operator, "."); output.Write(methodColor, Formatters.CSharp.CSharpTypeFormatter.GetFormattedIdentifier(localFunctionName)); }
protected override void FormatReturnValueMethodName(ITextColorWriter output, DmdMethodBase method, DmdPropertyInfo property) { const Formatters.TypeFormatterOptions options = Formatters.TypeFormatterOptions.IntrinsicTypeKeywords | Formatters.TypeFormatterOptions.Namespaces; var formatter = new Formatters.VisualBasic.VisualBasicTypeFormatter(output, options, null); formatter.Format(method.DeclaringType, null); output.Write(BoxedTextColor.Operator, "."); if ((object)property != null) { output.Write(MemberUtils.GetColor(property), Formatters.VisualBasic.VisualBasicTypeFormatter.GetFormattedIdentifier(property.Name)); output.Write(BoxedTextColor.Operator, "."); output.Write(BoxedTextColor.Keyword, "Get"); } else { output.Write(Formatters.TypeFormatterUtils.GetColor(method, canBeModule: true), Formatters.VisualBasic.VisualBasicTypeFormatter.GetFormattedIdentifier(method.Name)); } }
public static bool IsMatch(DmdPropertyInfo property, IList <DmdType> types) => IsMatch(property.GetMethodSignature().GetParameterTypes(), types ?? Array.Empty <DmdType>());
protected override void FormatReturnValueMethodName(DbgEvaluationInfo evalInfo, IDbgTextWriter output, DbgValueFormatterTypeOptions typeOptions, DbgValueFormatterOptions valueOptions, CultureInfo cultureInfo, DmdMethodBase method, DmdPropertyInfo property) { var typeFormatter = new Formatters.CSharp.CSharpTypeFormatter(output, typeOptions.ToTypeFormatterOptions(), null); typeFormatter.Format(method.DeclaringType, null); var valueFormatter = new Formatters.CSharp.CSharpPrimitiveValueFormatter(output, valueOptions.ToValueFormatterOptions(), cultureInfo); output.Write(DbgTextColor.Operator, "."); if ((object)property != null) { if (property.GetIndexParameters().Count != 0) { output.Write(DbgTextColor.Keyword, Keyword_this); WriteMethodParameterList(output, method, typeFormatter, GetAllMethodParameterTypes(property.GetMethodSignature()), IndexerParenOpen, IndexerParenClose); } else { output.Write(MemberUtils.GetColor(property), Formatters.CSharp.CSharpTypeFormatter.GetFormattedIdentifier(property.Name)); } valueFormatter.WriteTokenComment(property.MetadataToken); output.Write(DbgTextColor.Operator, "."); output.Write(DbgTextColor.Keyword, "get"); valueFormatter.WriteTokenComment(method.MetadataToken); } else { var methodColor = TypeFormatterUtils.GetColor(method, canBeModule: false); if (TypeFormatterUtils.TryGetMethodName(method.Name, out var containingMethodName, out var localFunctionName)) { output.Write(methodColor, Formatters.CSharp.CSharpTypeFormatter.GetFormattedIdentifier(containingMethodName)); output.Write(DbgTextColor.Operator, "."); output.Write(methodColor, Formatters.CSharp.CSharpTypeFormatter.GetFormattedIdentifier(localFunctionName)); valueFormatter.WriteTokenComment(method.MetadataToken); WriteGenericMethodArguments(output, method, typeFormatter); }
public static bool IsReadOnlyProperty(DmdPropertyInfo property) => HasIsReadOnlyAttribute(property.CustomAttributes);