예제 #1
0
        private void ModifyField(MemberActionAttribute fieldActionAttr,
			FieldDefinition yourField, FieldDefinition targetField)
        {
            Log_modifying_member("field", yourField);
            (fieldActionAttr != null).AssertTrue();
            ModificationScope scope = fieldActionAttr.Scope;
            if ((scope & ModificationScope.Accessibility) != 0) {
                targetField.SetAccessibility(yourField.GetAccessbility());
            }
            var attrFilter = AttrFilter(scope);
            CopyCustomAttributes(targetField, yourField, attrFilter);
            if ((scope & ModificationScope.Body) != 0) {
                targetField.InitialValue = yourField.InitialValue; //dunno what this is used for
                targetField.Constant = yourField.Constant;
                targetField.HasConstant = yourField.HasConstant;
            }
            var toggleAttributesAttr = yourField.GetCustomAttribute<ToggleFieldAttributes>();
            var toggleValue = toggleAttributesAttr?.Attributes ?? 0;
            targetField.Attributes ^= (FieldAttributes) toggleValue;
        }