예제 #1
0
파일: FieldDef.cs 프로젝트: EmilZhou/dnlib
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="readerModule">The module which contains this <c>Field</c> row</param>
		/// <param name="rid">Row ID</param>
		/// <exception cref="ArgumentNullException">If <paramref name="readerModule"/> is <c>null</c></exception>
		/// <exception cref="ArgumentException">If <paramref name="rid"/> is invalid</exception>
		public FieldDefMD(ModuleDefMD readerModule, uint rid) {
#if DEBUG
			if (readerModule == null)
				throw new ArgumentNullException("readerModule");
			if (readerModule.TablesStream.FieldTable.IsInvalidRID(rid))
				throw new BadImageFormatException(string.Format("Field rid {0} does not exist", rid));
#endif
			this.origRid = rid;
			this.rid = rid;
			this.readerModule = readerModule;
			uint name;
			uint signature = readerModule.TablesStream.ReadFieldRow(origRid, out this.attributes, out name);
			this.name = readerModule.StringsStream.ReadNoNull(name);
			this.origAttributes = (FieldAttributes)attributes;
			this.declaringType2 = readerModule.GetOwnerType(this);
			this.signature = readerModule.ReadSignature(signature, new GenericParamContext(declaringType2));
		}
예제 #2
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="readerModule">The module which contains this <c>MethodSpec</c> row</param>
 /// <param name="rid">Row ID</param>
 /// <param name="gpContext">Generic parameter context</param>
 /// <exception cref="ArgumentNullException">If <paramref name="readerModule"/> is <c>null</c></exception>
 /// <exception cref="ArgumentException">If <paramref name="rid"/> is invalid</exception>
 public MethodSpecMD(ModuleDefMD readerModule, uint rid, GenericParamContext gpContext)
 {
     #if DEBUG
     if (readerModule == null)
         throw new ArgumentNullException("readerModule");
     if (readerModule.TablesStream.MethodSpecTable.IsInvalidRID(rid))
         throw new BadImageFormatException(string.Format("MethodSpec rid {0} does not exist", rid));
     #endif
     this.origRid = rid;
     this.rid = rid;
     this.readerModule = readerModule;
     uint method;
     uint instantiation = readerModule.TablesStream.ReadMethodSpecRow(origRid, out method);
     this.method = readerModule.ResolveMethodDefOrRef(method, gpContext);
     this.instantiation = readerModule.ReadSignature(instantiation, gpContext);
 }
예제 #3
0
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="readerModule">The module which contains this <c>MemberRef</c> row</param>
		/// <param name="rid">Row ID</param>
		/// <param name="gpContext">Generic parameter context</param>
		/// <exception cref="ArgumentNullException">If <paramref name="readerModule"/> is <c>null</c></exception>
		/// <exception cref="ArgumentException">If <paramref name="rid"/> is invalid</exception>
		public MemberRefMD(ModuleDefMD readerModule, uint rid, GenericParamContext gpContext) {
#if DEBUG
			if (readerModule == null)
				throw new ArgumentNullException("readerModule");
			if (readerModule.TablesStream.MemberRefTable.IsInvalidRID(rid))
				throw new BadImageFormatException(string.Format("MemberRef rid {0} does not exist", rid));
#endif
			this.origRid = rid;
			this.rid = rid;
			this.readerModule = readerModule;
			this.module = readerModule;
			uint @class, name;
			uint signature = readerModule.TablesStream.ReadMemberRefRow(origRid, out @class, out name);
			this.name = readerModule.StringsStream.ReadNoNull(name);
			this.@class = readerModule.ResolveMemberRefParent(@class, gpContext);
			this.signature = readerModule.ReadSignature(signature, gpContext);
		}
예제 #4
0
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="readerModule">The module which contains this <c>StandAloneSig</c> row</param>
		/// <param name="rid">Row ID</param>
		/// <param name="gpContext">Generic parameter context</param>
		/// <exception cref="ArgumentNullException">If <paramref name="readerModule"/> is <c>null</c></exception>
		/// <exception cref="ArgumentException">If <paramref name="rid"/> is invalid</exception>
		public StandAloneSigMD(ModuleDefMD readerModule, uint rid, GenericParamContext gpContext) {
#if DEBUG
			if (readerModule == null)
				throw new ArgumentNullException("readerModule");
			if (readerModule.TablesStream.StandAloneSigTable.IsInvalidRID(rid))
				throw new BadImageFormatException(string.Format("StandAloneSig rid {0} does not exist", rid));
#endif
			this.origRid = rid;
			this.rid = rid;
			this.readerModule = readerModule;
			uint signature = readerModule.TablesStream.ReadStandAloneSigRow2(origRid);
			this.signature = readerModule.ReadSignature(signature, gpContext);
		}