예제 #1
0
            internal Field(
                TypeAndCustomInfo declaringTypeAndInfo,
                TypeAndCustomInfo fieldTypeAndInfo,
                FieldInfo fieldInfo,
                string name,
                Field parent,
                bool isRest
            )
            {
                Debug.Assert(declaringTypeAndInfo.ClrType != null);
                Debug.Assert(fieldTypeAndInfo.ClrType != null);
                Debug.Assert(fieldInfo != null);
                Debug.Assert(name != null);
                Debug.Assert(declaringTypeAndInfo.Type.Equals(fieldInfo.DeclaringType));
                Debug.Assert(fieldTypeAndInfo.Type.Equals(fieldInfo.FieldType));
                Debug.Assert(
                    parent == null || parent.FieldInfo.FieldType.Equals(fieldInfo.DeclaringType)
                );

                DeclaringTypeAndInfo = declaringTypeAndInfo;
                FieldTypeAndInfo = fieldTypeAndInfo;
                FieldInfo = fieldInfo;
                Name = name;
                Parent = parent;
                IsRest = isRest;
            }
예제 #2
0
        private static TypeAndCustomInfo GetTupleFieldTypeAndInfo(
            DkmClrAppDomain appDomain,
            FieldInfo field,
            CustomTypeInfoTypeArgumentMap customTypeInfoMap)
        {
            var declaringTypeDef = field.DeclaringType.GetGenericTypeDefinition();
            var fieldDef         = declaringTypeDef.GetTupleField(field.Name);
            var fieldType        = DkmClrType.Create(appDomain, field.FieldType);
            var fieldTypeInfo    = customTypeInfoMap.SubstituteCustomTypeInfo(fieldDef.FieldType, null);

            return(new TypeAndCustomInfo(fieldType, fieldTypeInfo));
        }
예제 #3
0
 private static TypeAndCustomInfo GetTupleFieldTypeAndInfo(
     DkmClrAppDomain appDomain,
     FieldInfo field,
     CustomTypeInfoTypeArgumentMap customTypeInfoMap)
 {
     var declaringTypeDef = field.DeclaringType.GetGenericTypeDefinition();
     var fieldDef = declaringTypeDef.GetTupleField(field.Name);
     var fieldType = DkmClrType.Create(appDomain, field.FieldType);
     var fieldTypeInfo = customTypeInfoMap.SubstituteCustomTypeInfo(fieldDef.FieldType, null);
     return new TypeAndCustomInfo(fieldType, fieldTypeInfo);
 }
예제 #4
0
            internal Field(
                TypeAndCustomInfo declaringTypeAndInfo,
                TypeAndCustomInfo fieldTypeAndInfo,
                FieldInfo fieldInfo,
                string name,
                Field parent,
                bool isRest)
            {
                Debug.Assert(declaringTypeAndInfo.ClrType != null);
                Debug.Assert(fieldTypeAndInfo.ClrType != null);
                Debug.Assert(fieldInfo != null);
                Debug.Assert(name != null);
                Debug.Assert(declaringTypeAndInfo.Type.Equals(fieldInfo.DeclaringType));
                Debug.Assert(fieldTypeAndInfo.Type.Equals(fieldInfo.FieldType));
                Debug.Assert(parent == null || parent.FieldInfo.FieldType.Equals(fieldInfo.DeclaringType));

                DeclaringTypeAndInfo = declaringTypeAndInfo;
                FieldTypeAndInfo = fieldTypeAndInfo;
                FieldInfo = fieldInfo;
                Name = name;
                Parent = parent;
                IsRest = isRest;
            }