コード例 #1
0
        public void SetSignature(
            Type?returnType, Type[]?returnTypeRequiredCustomModifiers, Type[]?returnTypeOptionalCustomModifiers,
            Type[]?parameterTypes, Type[][]?parameterTypeRequiredCustomModifiers, Type[][]?parameterTypeOptionalCustomModifiers)
        {
            // We should throw InvalidOperation_MethodBuilderBaked here if the method signature has been baked.
            // But we cannot because that would be a breaking change from V2.
            if (m_token != 0)
            {
                return;
            }

            AssemblyBuilder.CheckContext(returnType);
            AssemblyBuilder.CheckContext(returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes);
            AssemblyBuilder.CheckContext(parameterTypeRequiredCustomModifiers);
            AssemblyBuilder.CheckContext(parameterTypeOptionalCustomModifiers);

            ThrowIfGeneric();

            if (returnType != null)
            {
                m_returnType = returnType;
            }

            if (parameterTypes != null)
            {
                m_parameterTypes = new Type[parameterTypes.Length];
                Array.Copy(parameterTypes, m_parameterTypes, parameterTypes.Length);
            }

            m_returnTypeRequiredCustomModifiers    = returnTypeRequiredCustomModifiers;
            m_returnTypeOptionalCustomModifiers    = returnTypeOptionalCustomModifiers;
            m_parameterTypeRequiredCustomModifiers = parameterTypeRequiredCustomModifiers;
            m_parameterTypeOptionalCustomModifiers = parameterTypeOptionalCustomModifiers;
        }
コード例 #2
0
 public void SetBaseTypeConstraint(
     [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
     Type?baseTypeConstraint
     )
 {
     AssemblyBuilder.CheckContext(baseTypeConstraint);
     m_type.SetParent(baseTypeConstraint);
 }
コード例 #3
0
        public void SetReturnType(Type?returnType)
        {
            AssemblyBuilder.CheckContext(returnType);

            SetSignature(returnType, null, null, null, null, null);
        }
コード例 #4
0
        public void SetParameters(params Type[] parameterTypes)
        {
            AssemblyBuilder.CheckContext(parameterTypes);

            SetSignature(null, null, null, parameterTypes, null, null);
        }
コード例 #5
0
 public void SetInterfaceConstraints(params Type[]?interfaceConstraints)
 {
     AssemblyBuilder.CheckContext(interfaceConstraints);
     m_type.SetInterfaces(interfaceConstraints);
 }