Mono.CSharp.FieldSpec.GetMetaInfo C# (CSharp) Method

GetMetaInfo() public method

public GetMetaInfo ( ) : FieldInfo
return FieldInfo
		public FieldInfo GetMetaInfo ()
		{
			if ((state & StateFlags.PendingMetaInflate) != 0) {
				var decl_meta = DeclaringType.GetMetaInfo ();
				if (DeclaringType.IsTypeBuilder) {
					metaInfo = TypeBuilder.GetField (decl_meta, metaInfo);
				} else {
					var orig_token = metaInfo.MetadataToken;
					metaInfo = decl_meta.GetField (Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
					if (metaInfo.MetadataToken != orig_token)
						throw new NotImplementedException ("Resolved to wrong meta token");

					// What a stupid API, does not work because field handle is imported
					// metaInfo = FieldInfo.GetFieldFromHandle (metaInfo.FieldHandle, DeclaringType.MetaInfo.TypeHandle);
				}

				state &= ~StateFlags.PendingMetaInflate;
			}

			return metaInfo;
		}

Usage Example

Example #1
0
        public void Emit(OpCode opcode, FieldSpec field)
        {
            if (IsAnonymousStoreyMutateRequired)
            {
                field = field.Mutate(CurrentAnonymousMethod.Storey.Mutator);
            }

            ig.Emit(opcode, field.GetMetaInfo());

            if (TrackStackTypes)
            {
                switch (opcode.StackBehaviourPush)
                {
                case StackBehaviour.Push0:
                    // nothing
                    break;

                case StackBehaviour.Push1:
                    SetStackType(field.MemberType);
                    break;

                case StackBehaviour.Pushi:
                    SetStackType(ReferenceContainer.MakeType(Module, field.MemberType));
                    break;

                default:
                    throw new NotImplementedException();
                }
            }
        }
All Usage Examples Of Mono.CSharp.FieldSpec::GetMetaInfo