예제 #1
0
		void InitFields() {
			if (tokenToField != null)
				return;
			tokenToField = new Dictionary<int, MField>(typeDef.Fields.Count);
			fieldRefToField = new FieldDefDict<MField>();

			var tmpTokenToField = new Dictionary<int, FieldInfo>();
			var flags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
			foreach (var f in type.GetFields(flags))
				tmpTokenToField[f.MetadataToken] = f;
			foreach (var f in typeDef.Fields) {
				var token = (int)f.MDToken.Raw;
				var field = new MField(tmpTokenToField[token], f);
				tokenToField[token] = field;
				fieldRefToField.Add(field.fieldDef, field);
			}
		}
예제 #2
0
        void InitFields()
        {
            if (tokenToField != null)
            {
                return;
            }
            tokenToField    = new Dictionary <int, MField>(typeDef.Fields.Count);
            fieldRefToField = new FieldDefDict <MField>();

            var tmpTokenToField = new Dictionary <int, FieldInfo>();
            var flags           = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;

            foreach (var f in type.GetFields(flags))
            {
                tmpTokenToField[f.MetadataToken] = f;
            }
            foreach (var f in typeDef.Fields)
            {
                var token = (int)f.MDToken.Raw;
                var field = new MField(tmpTokenToField[token], f);
                tokenToField[token] = field;
                fieldRefToField.Add(field.fieldDef, field);
            }
        }