FieldInfo.IsInitOnly Właściwość

Definicja

Pobiera wartość wskazującą, czy pole można ustawić tylko w treści konstruktora.

C#
public bool IsInitOnly { get; }

Wartość właściwości

true jeśli pole ma InitOnly ustawiony atrybut; falsew przeciwnym razie .

Implementuje

Przykłady

W poniższym przykładzie są tworzone dwa pola. Drugie pole jest tylko do odczytu, bez ustawionego dostępu i IsInitOnly jest ustawione na truewartość .

C#
using System;
using System.Reflection;

//Make two fields, one public and one read-only.
public class Myfielda
{
    public string field = "A - public modifiable field";
}
public class Myfieldb
{
    public readonly string field = "B - readonly field";
}

public class Myfieldinfo
{
    public static int Main()
    {
        Console.WriteLine("\nReflection.FieldInfo");
        Myfielda Myfielda = new Myfielda();
        Myfieldb Myfieldb = new Myfieldb();

        //Get the Type and FieldInfo.
        Type MyTypea = typeof(Myfielda);
        FieldInfo Myfieldinfoa = MyTypea.GetField("field",
            BindingFlags.Public | BindingFlags.Instance);
        Type MyTypeb = typeof(Myfieldb);
        FieldInfo Myfieldinfob = MyTypeb.GetField("field",
            BindingFlags.Public | BindingFlags.Instance);

        //Modify the fields.
        //Note that Myfieldb is not modified, as it is
        //read-only (IsInitOnly is True).
        Myfielda.field = "A - modified";
        //Myfieldb.field = "B - modified";

        //For the first field, get and display the name, field, and IsInitOnly state.
        Console.Write("\n{0} - {1}, IsInitOnly = {2} ",
            MyTypea.FullName,
            Myfieldinfoa.GetValue(Myfielda),
            Myfieldinfoa.IsInitOnly);

        //For the second field get and display the name, field, and IsInitOnly state.
        Console.Write("\n{0} - {1}, IsInitOnly = {2} ",
            MyTypeb.FullName,
            Myfieldinfob.GetValue(Myfieldb),
            Myfieldinfob.IsInitOnly);

        return 0;
    }
}

Ten kod spowoduje wygenerowanie następujących danych wyjściowych:

Console
Reflection.FieldInfo

Myfielda - A- modified, IsInitOnly = False

Myfieldb - B readonly field, IsInitOnly = True

Uwagi

Jeśli zwracana wartość to true, pole można zainicjować tylko wtedy i jest tylko do odczytu.

Aby uzyskać właściwość, najpierw pobierz klasę IsInitOnlyType. W pliku Typepobierz element FieldInfo. Z obiektu FieldInfopobierz IsInitOnly właściwość . Aby uzyskać dostęp do pola innego niż publiczny, połącz się BindingFlags.NonPublic z metodą lub obie BindingFlags.StaticBindingFlags.Instance z GetField nich.

Właściwość IsInitOnly jest ustawiana po ustawieniu atrybutu FieldAttributes.InitOnly .

Dotyczy

Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Zobacz też