public AssemblyNameReference(string name, Version version)
        {
            if (name == null)
                throw new ArgumentNullException("name");

            this.name = name;
            this.version = version;
            this.hash_algorithm = AssemblyHashAlgorithm.None;
            this.token = new MetadataToken(TokenType.AssemblyRef);
        }
 public bool TryGetInterfaceMapping(TypeDefinition type, out MetadataToken[] mapping)
 {
     return Interfaces.TryGetValue(type.token.RID, out mapping);
 }
 public bool TryGetOverrideMapping(MethodDefinition method, out MetadataToken[] mapping)
 {
     return Overrides.TryGetValue(method.token.RID, out mapping);
 }
 public bool TryGetGenericConstraintMapping(GenericParameter generic_parameter, out MetadataToken[] mapping)
 {
     return GenericConstraints.TryGetValue(generic_parameter.token.RID, out mapping);
 }
 public void SetOverrideMapping(uint rid, MetadataToken[] mapping)
 {
     Overrides[rid] = mapping;
 }
 public void SetInterfaceMapping(uint type_rid, MetadataToken[] mapping)
 {
     Interfaces[type_rid] = mapping;
 }
 public void SetGenericConstraintMapping(uint gp_rid, MetadataToken[] mapping)
 {
     GenericConstraints[gp_rid] = mapping;
 }
Esempio n. 8
0
 public static uint CompressMetadataToken(this CodedIndex self, MetadataToken token)
 {
     uint ret = 0;
     if (token.RID == 0)
         return ret;
     switch (self)
     {
         case CodedIndex.TypeDefOrRef:
             ret = token.RID << 2;
             switch (token.TokenType)
             {
                 case TokenType.TypeDef:
                     return ret | 0;
                 case TokenType.TypeRef:
                     return ret | 1;
                 case TokenType.TypeSpec:
                     return ret | 2;
                 default:
                     goto exit;
             }
         case CodedIndex.HasConstant:
             ret = token.RID << 2;
             switch (token.TokenType)
             {
                 case TokenType.Field:
                     return ret | 0;
                 case TokenType.Param:
                     return ret | 1;
                 case TokenType.Property:
                     return ret | 2;
                 default:
                     goto exit;
             }
         case CodedIndex.HasCustomAttribute:
             ret = token.RID << 5;
             switch (token.TokenType)
             {
                 case TokenType.Method:
                     return ret | 0;
                 case TokenType.Field:
                     return ret | 1;
                 case TokenType.TypeRef:
                     return ret | 2;
                 case TokenType.TypeDef:
                     return ret | 3;
                 case TokenType.Param:
                     return ret | 4;
                 case TokenType.InterfaceImpl:
                     return ret | 5;
                 case TokenType.MemberRef:
                     return ret | 6;
                 case TokenType.Module:
                     return ret | 7;
                 case TokenType.Permission:
                     return ret | 8;
                 case TokenType.Property:
                     return ret | 9;
                 case TokenType.Event:
                     return ret | 10;
                 case TokenType.Signature:
                     return ret | 11;
                 case TokenType.ModuleRef:
                     return ret | 12;
                 case TokenType.TypeSpec:
                     return ret | 13;
                 case TokenType.Assembly:
                     return ret | 14;
                 case TokenType.AssemblyRef:
                     return ret | 15;
                 case TokenType.File:
                     return ret | 16;
                 case TokenType.ExportedType:
                     return ret | 17;
                 case TokenType.ManifestResource:
                     return ret | 18;
                 case TokenType.GenericParam:
                     return ret | 19;
                 default:
                     goto exit;
             }
         case CodedIndex.HasFieldMarshal:
             ret = token.RID << 1;
             switch (token.TokenType)
             {
                 case TokenType.Field:
                     return ret | 0;
                 case TokenType.Param:
                     return ret | 1;
                 default:
                     goto exit;
             }
         case CodedIndex.HasDeclSecurity:
             ret = token.RID << 2;
             switch (token.TokenType)
             {
                 case TokenType.TypeDef:
                     return ret | 0;
                 case TokenType.Method:
                     return ret | 1;
                 case TokenType.Assembly:
                     return ret | 2;
                 default:
                     goto exit;
             }
         case CodedIndex.MemberRefParent:
             ret = token.RID << 3;
             switch (token.TokenType)
             {
                 case TokenType.TypeDef:
                     return ret | 0;
                 case TokenType.TypeRef:
                     return ret | 1;
                 case TokenType.ModuleRef:
                     return ret | 2;
                 case TokenType.Method:
                     return ret | 3;
                 case TokenType.TypeSpec:
                     return ret | 4;
                 default:
                     goto exit;
             }
         case CodedIndex.HasSemantics:
             ret = token.RID << 1;
             switch (token.TokenType)
             {
                 case TokenType.Event:
                     return ret | 0;
                 case TokenType.Property:
                     return ret | 1;
                 default:
                     goto exit;
             }
         case CodedIndex.MethodDefOrRef:
             ret = token.RID << 1;
             switch (token.TokenType)
             {
                 case TokenType.Method:
                     return ret | 0;
                 case TokenType.MemberRef:
                     return ret | 1;
                 default:
                     goto exit;
             }
         case CodedIndex.MemberForwarded:
             ret = token.RID << 1;
             switch (token.TokenType)
             {
                 case TokenType.Field:
                     return ret | 0;
                 case TokenType.Method:
                     return ret | 1;
                 default:
                     goto exit;
             }
         case CodedIndex.Implementation:
             ret = token.RID << 2;
             switch (token.TokenType)
             {
                 case TokenType.File:
                     return ret | 0;
                 case TokenType.AssemblyRef:
                     return ret | 1;
                 case TokenType.ExportedType:
                     return ret | 2;
                 default:
                     goto exit;
             }
         case CodedIndex.CustomAttributeType:
             ret = token.RID << 3;
             switch (token.TokenType)
             {
                 case TokenType.Method:
                     return ret | 2;
                 case TokenType.MemberRef:
                     return ret | 3;
                 default:
                     goto exit;
             }
         case CodedIndex.ResolutionScope:
             ret = token.RID << 2;
             switch (token.TokenType)
             {
                 case TokenType.Module:
                     return ret | 0;
                 case TokenType.ModuleRef:
                     return ret | 1;
                 case TokenType.AssemblyRef:
                     return ret | 2;
                 case TokenType.TypeRef:
                     return ret | 3;
                 default:
                     goto exit;
             }
         case CodedIndex.TypeOrMethodDef:
             ret = token.RID << 1;
             switch (token.TokenType)
             {
                 case TokenType.TypeDef:
                     return ret | 0;
                 case TokenType.Method:
                     return ret | 1;
                 default:
                     goto exit;
             }
         default:
             goto exit;
     }
     exit:
     throw new ArgumentException();
 }