示例#1
0
        public CliParameterMemberDictionary(_ICliManager manager, uint methodIndex, ICliMetadataRoot metadataRoot, TParent parent, int dropoff = 0)
        {
            this.manager = manager;
            this.parent  = parent;
            var method = metadataRoot.TableStream.MethodDefinitionTable[(int)methodIndex];

            this.signature = method.Signature;
            bool skipFirst = false;

            if (method.Parameters.Count > 0 &&
                method.Parameters[0].Sequence == 0)
            {
                skipFirst = true;
            }
            if (dropoff != 0)
            {
                if (skipFirst)
                {
                    this.Initialize(method.Parameters.Skip(1).Drop(dropoff).ToArray());
                }
                else
                {
                    this.Initialize(method.Parameters.Drop(dropoff).ToArray());
                }
            }
            else if (skipFirst)
            {
                this.Initialize(method.Parameters.Skip(1).ToArray());
            }
            else
            {
                this.Initialize(method.Parameters);
            }
        }
示例#2
0
 public CliSignatureTypeCollection(_ICliManager manager, ICliMetadataMethodSignature signature, IType activeType, IMethodSignatureMember activeMethod)
 {
     if (manager == null)
     {
         throw new ArgumentNullException("manager");
     }
     if (signature == null)
     {
         throw new ArgumentNullException("signature");
     }
     this.manager        = manager;
     this.signatureTypes = new IType[signature.Parameters.Count];
     this.ActiveType     = activeType;
     this.ActiveMethod   = activeMethod;
     this.signature      = signature;
 }
示例#3
0
 internal CliMetadataFunctionPointerTypeSignature(ICliMetadataMethodSignature signature)
 {
     this.Signature = signature;
 }