public ConstructorSpec ( IClrElementName DeclaringTypeName, ClrAccessKind?AccessLevel = null, bool IsStatic = false, MethodBodySpec Body = null, CodeDocumentationSpec Documentation = null, ClrCustomMemberIdentifier CustomMember = null, IEnumerable <MethodParameterSpec> MethodParameters = null, IEnumerable <AttributionSpec> Attributions = null, ConstructorInvocationSpec BaseInvocation = null ) : base( DeclaringTypeName: DeclaringTypeName, Name: new ClrConstructorName(DeclaringTypeName.SimpleName), AccessLevel: AccessLevel ?? ClrAccessKind.Public, IsStatic: IsStatic, IsExtension: false, IsAbstract: false, IsVirtual: false, IsOverride: false, IsSealed: false, IsPartial: false, Body: Body, Documentation: Documentation, CustomMemberKind: CustomMember, MethodParameters: MethodParameters, Attributions: Attributions) { this.BaseInvocation = BaseInvocation; }
/// <summary> /// Defines a field /// </summary> /// <param name="DeclaringType">The type that declares the field</param> /// <param name="FieldName">The name of the field</param> /// <param name="FieldType">The field's type</param> /// <param name="AccessLevel">The fields visibility</param> /// <param name="IsStatic">Specifies whether the field is static</param> /// <param name="IsReadOnly">Specifies whether the field is readonly</param> /// <param name="Initializer">Specifies the value with which the field is initialized</param> /// <returns></returns> public static FieldSpec SpecifyField(this ClrClassName DeclaringType, ClrFieldName FieldName, ClrTypeReference FieldType, ClrAccessKind?AccessLevel = null, bool IsStatic = true, bool IsReadOnly = true, ConstructorInvocationSpec Initializer = null) => new FieldSpec ( DeclaringTypeName: DeclaringType, Name: FieldName, FieldType: FieldType, AccessLevel: AccessLevel ?? ClrAccessKind.Public, IsStatic: true, IsReadOnly: true, Initializer: Initializer != null ? new FieldInitializerSpec(Initializer) : null );
public FieldInitializerSpec(ConstructorInvocationSpec ConstructorInvocation) => this.ConstructorInvocation = ConstructorInvocation;
/// <summary> /// Defines a <see cref="FieldSpec"/> /// </summary> /// <typeparam name="T">The field's type</typeparam> /// <param name="declaringType">The type that declares the field</param> /// <param name="name">The name of the field</param> /// <param name="init">The field initializer</param> /// <returns></returns> public static FieldSpec SpecifyField <T>(this ClrClassName declaringType, string name, ConstructorInvocationSpec init) => new FieldSpec(DeclaringTypeName: declaringType, Name: new ClrFieldName(name), FieldType: ClrType.Get <T>().GetReference(), AccessLevel: ClrAccessKind.Public, IsStatic: true, IsReadOnly: true, Initializer: new FieldInitializerSpec(init));