Ejemplo n.º 1
0
        internal static EvalResult CreateMemberDataItem(
            ResultProvider resultProvider,
            DkmInspectionContext inspectionContext,
            MemberAndDeclarationInfo member,
            DkmClrValue memberValue,
            EvalResultDataItem parent,
            DynamicFlagsMap dynamicFlagsMap,
            ExpansionFlags flags)
        {
            var    fullNameProvider = resultProvider.FullNameProvider;
            var    declaredType     = member.Type;
            var    declaredTypeInfo = dynamicFlagsMap.SubstituteDynamicFlags(member.OriginalDefinitionType, DynamicFlagsCustomTypeInfo.Create(member.TypeInfo)).GetCustomTypeInfo();
            string memberName;
            // Considering, we're not handling the case of a member inherited from a generic base type.
            var typeDeclaringMember     = member.GetExplicitlyImplementedInterface(out memberName) ?? member.DeclaringType;
            var typeDeclaringMemberInfo = typeDeclaringMember.IsInterface
                ? dynamicFlagsMap.SubstituteDynamicFlags(typeDeclaringMember.GetInterfaceListEntry(member.DeclaringType), originalDynamicFlags: default(DynamicFlagsCustomTypeInfo)).GetCustomTypeInfo()
                : null;
            var    memberNameForFullName = fullNameProvider.GetClrValidIdentifier(inspectionContext, memberName);
            var    appDomain             = memberValue.Type.AppDomain;
            string fullName;

            if (memberNameForFullName == null)
            {
                fullName = null;
            }
            else
            {
                memberName = memberNameForFullName;
                fullName   = MakeFullName(
                    fullNameProvider,
                    inspectionContext,
                    memberNameForFullName,
                    new TypeAndCustomInfo(DkmClrType.Create(appDomain, typeDeclaringMember), typeDeclaringMemberInfo),    // Note: Won't include DynamicAttribute.
                    member.RequiresExplicitCast,
                    member.IsStatic,
                    parent);
            }
            return(resultProvider.CreateDataItem(
                       inspectionContext,
                       memberName,
                       typeDeclaringMemberAndInfo: (member.IncludeTypeInMemberName || typeDeclaringMember.IsInterface) ? new TypeAndCustomInfo(DkmClrType.Create(appDomain, typeDeclaringMember), typeDeclaringMemberInfo) : default(TypeAndCustomInfo), // Note: Won't include DynamicAttribute.
                       declaredTypeAndInfo: new TypeAndCustomInfo(DkmClrType.Create(appDomain, declaredType), declaredTypeInfo),
                       value: memberValue,
                       useDebuggerDisplay: parent != null,
                       expansionFlags: flags,
                       childShouldParenthesize: false,
                       fullName: fullName,
                       formatSpecifiers: Formatter.NoFormatSpecifiers,
                       category: DkmEvaluationResultCategory.Other,
                       flags: memberValue.EvalFlags,
                       evalFlags: DkmEvaluationFlags.None));
        }
Ejemplo n.º 2
0
        private EvalResultDataItem GetRow(
            ResultProvider resultProvider,
            DkmInspectionContext inspectionContext,
            DkmClrValue value,
            int index,
            EvalResultDataItem parent)
        {
            var typeParameter    = _typeParameters[index];
            var typeArgument     = _typeArguments[index];
            var typeArgumentInfo = _dynamicFlagsMap.SubstituteDynamicFlags(typeParameter, default(DynamicFlagsCustomTypeInfo)).GetCustomTypeInfo();
            var formatSpecifiers = Formatter.NoFormatSpecifiers;

            return(new EvalResultDataItem(
                       ExpansionKind.TypeVariable,
                       typeParameter.Name,
                       typeDeclaringMemberAndInfo: default(TypeAndCustomInfo),
                       declaredTypeAndInfo: new TypeAndCustomInfo(typeArgument, typeArgumentInfo),
                       parent: parent,
                       value: value,
                       displayValue: inspectionContext.GetTypeName(DkmClrType.Create(value.Type.AppDomain, typeArgument), typeArgumentInfo, formatSpecifiers),
                       expansion: null,
                       childShouldParenthesize: false,
                       fullName: null,
                       childFullNamePrefixOpt: null,
                       formatSpecifiers: formatSpecifiers,
                       category: DkmEvaluationResultCategory.Data,
                       flags: DkmEvaluationResultFlags.ReadOnly,
                       editableValue: null,
                       inspectionContext: inspectionContext));
        }
Ejemplo n.º 3
0
        internal static EvalResultDataItem CreateMemberDataItem(
            ResultProvider resultProvider,
            DkmInspectionContext inspectionContext,
            MemberAndDeclarationInfo member,
            DkmClrValue memberValue,
            EvalResultDataItem parent,
            DynamicFlagsMap dynamicFlagsMap,
            ExpansionFlags flags)
        {
            var    declaredType     = member.Type;
            var    declaredTypeInfo = dynamicFlagsMap.SubstituteDynamicFlags(member.OriginalDefinitionType, DynamicFlagsCustomTypeInfo.Create(member.TypeInfo)).GetCustomTypeInfo();
            string memberName;
            // Considering, we're not handling the case of a member inherited from a generic base type.
            var typeDeclaringMember     = member.GetExplicitlyImplementedInterface(out memberName) ?? member.DeclaringType;
            var typeDeclaringMemberInfo = typeDeclaringMember.IsInterface
                ? dynamicFlagsMap.SubstituteDynamicFlags(typeDeclaringMember.GetInterfaceListEntry(member.DeclaringType), originalDynamicFlags: default(DynamicFlagsCustomTypeInfo)).GetCustomTypeInfo()
                : null;
            var  formatter = resultProvider.Formatter;
            bool sawInvalidIdentifier;

            memberName = formatter.GetIdentifierEscapingPotentialKeywords(memberName, out sawInvalidIdentifier);
            var fullName = sawInvalidIdentifier
                ? null
                : MakeFullName(
                formatter,
                memberName,
                new TypeAndCustomInfo(typeDeclaringMember, typeDeclaringMemberInfo),     // Note: Won't include DynamicAttribute.
                member.RequiresExplicitCast,
                member.IsStatic,
                parent);

            return(resultProvider.CreateDataItem(
                       inspectionContext,
                       memberName,
                       typeDeclaringMemberAndInfo: (member.IncludeTypeInMemberName || typeDeclaringMember.IsInterface) ? new TypeAndCustomInfo(typeDeclaringMember, typeDeclaringMemberInfo) : default(TypeAndCustomInfo), // Note: Won't include DynamicAttribute.
                       declaredTypeAndInfo: new TypeAndCustomInfo(declaredType, declaredTypeInfo),
                       value: memberValue,
                       parent: parent,
                       expansionFlags: flags,
                       childShouldParenthesize: false,
                       fullName: fullName,
                       formatSpecifiers: Formatter.NoFormatSpecifiers,
                       category: DkmEvaluationResultCategory.Other,
                       flags: memberValue.EvalFlags,
                       evalFlags: DkmEvaluationFlags.None));
        }
Ejemplo n.º 4
0
 internal static EvalResultDataItem CreateMemberDataItem(
     ResultProvider resultProvider,
     DkmInspectionContext inspectionContext,
     MemberAndDeclarationInfo member,
     DkmClrValue memberValue,
     EvalResultDataItem parent,
     DynamicFlagsMap dynamicFlagsMap,
     ExpansionFlags flags)
 {
     var declaredType = member.Type;
     var declaredTypeInfo = dynamicFlagsMap.SubstituteDynamicFlags(member.OriginalDefinitionType, DynamicFlagsCustomTypeInfo.Create(member.TypeInfo)).GetCustomTypeInfo();
     string memberName;
     // Considering, we're not handling the case of a member inherited from a generic base type.
     var typeDeclaringMember = member.GetExplicitlyImplementedInterface(out memberName) ?? member.DeclaringType;
     var typeDeclaringMemberInfo = typeDeclaringMember.IsInterface
         ? dynamicFlagsMap.SubstituteDynamicFlags(typeDeclaringMember.GetInterfaceListEntry(member.DeclaringType), originalDynamicFlags: default(DynamicFlagsCustomTypeInfo)).GetCustomTypeInfo()
         : null;
     var formatter = resultProvider.Formatter;
     memberName = formatter.GetIdentifierEscapingPotentialKeywords(memberName);
     var fullName = MakeFullName(
         formatter,
         memberName,
         new TypeAndCustomInfo(typeDeclaringMember, typeDeclaringMemberInfo), // Note: Won't include DynamicAttribute.
         member.RequiresExplicitCast,
         member.IsStatic,
         parent);
     return resultProvider.CreateDataItem(
         inspectionContext,
         memberName,
         typeDeclaringMemberAndInfo: (member.IncludeTypeInMemberName || typeDeclaringMember.IsInterface) ? new TypeAndCustomInfo(typeDeclaringMember, typeDeclaringMemberInfo) : default(TypeAndCustomInfo), // Note: Won't include DynamicAttribute.
         declaredTypeAndInfo: new TypeAndCustomInfo(declaredType, declaredTypeInfo),
         value: memberValue,
         parent: parent,
         expansionFlags: flags,
         childShouldParenthesize: false,
         fullName: fullName,
         formatSpecifiers: Formatter.NoFormatSpecifiers,
         category: DkmEvaluationResultCategory.Other,
         flags: memberValue.EvalFlags,
         evalFlags: DkmEvaluationFlags.None);
 }