Forstå refleksjon i C#
Bruk refleksjon til å undersøke og manipulere objekter under kjøring
Forstå refleksjon i C# er en gratis leksjon i C# Academy på CoddyKit. Dette er leksjon 5 av 5. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i C# Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i C# Academy inneholder totalt 5 leksjoner.
Introduksjon til refleksjon
Forstå refleksjon i C#
Velkommen til neste leksjon! I denne leksjonen lærer du om refleksjon i C#, en kraftig funksjon som gjør det mulig å undersøke og samhandle med typer og objekter under kjøring. La oss begynne!

Hva er refleksjon?
Refleksjon er et programs evne til å undersøke og endre sin egen struktur under kjøring. Det brukes ofte til:
- Å få tilgang til metadata om typer, metoder og egenskaper.
- Å kalle metoder dynamisk og få tilgang til felt.
- Å bygge rammeverk og verktøy som serialiserere og ORM-er.
Viktig poeng: Refleksjon er en del av navneområdet System.Reflection.
Få tilgang til typeinformasjon
Bruk klassen Type for å få tilgang til metadata om en type. Eksempel:
Tips: Bruk GetProperties, GetMethods og GetFields for å undersøke typemedlemmer.
using System;
class SampleClass {
public int Id { get; set; }
public string Name { get; set; }
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
Console.WriteLine("Type Name: " + type.Name);
Console.WriteLine("Properties:");
foreach (var prop in type.GetProperties()) {
Console.WriteLine("- " + prop.Name);
}
}
}
Opprette objekter dynamisk
Du kan bruke refleksjon til å opprette forekomster av en klasse dynamisk. Eksempel:
Viktig poeng: Bruk Activator.CreateInstance for å opprette objekter under kjøring.
using System;
class SampleClass {
public string Name { get; set; }
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
object instance = Activator.CreateInstance(type);
var property = type.GetProperty("Name");
property.SetValue(instance, "Reflection Example");
Console.WriteLine("Name: " + property.GetValue(instance));
}
}
Kalle metoder dynamisk
Refleksjon gjør det mulig å kalle metoder under kjøring uten å kjenne til dem ved kompilering. Eksempel:
Tips: Bruk GetMethod og Invoke for dynamiske metodekall.
using System;
class SampleClass {
public void Greet(string name) {
Console.WriteLine("Hello, " + name);
}
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
object instance = Activator.CreateInstance(type);
var method = type.GetMethod("Greet");
method.Invoke(instance, new object[] { "World" });
}
}
Arbeide med attributter
Refleksjon kan brukes til å undersøke egendefinerte attributter som er brukt på typer, metoder eller egenskaper. Eksempel:
Viktig poeng: Bruk GetCustomAttributes for å hente attributtinformasjon.
using System;
[AttributeUsage(AttributeTargets.Class)]
class SampleAttribute : Attribute {
public string Description { get; }
public SampleAttribute(string description) {
Description = description;
}
}
[Sample("This is a sample class.")]
class SampleClass {}
class Program {
static void Main() {
Type type = typeof(SampleClass);
var attributes = type.GetCustomAttributes(typeof(SampleAttribute), false);
foreach (SampleAttribute attr in attributes) {
Console.WriteLine("Description: " + attr.Description);
}
}
}
Øvingsoppgave
Opprett et program som bruker refleksjon til å undersøke en klasse, vise metodene og egenskapene dens og kalle én av metodene dynamisk. Eksempel:
using System;
class SampleClass {
public int Add(int a, int b) {
return a + b;
}
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
Console.WriteLine("Methods:");
foreach (var method in type.GetMethods()) {
Console.WriteLine("- " + method.Name);
}
object instance = Activator.CreateInstance(type);
var addMethod = type.GetMethod("Add");
int result = (int)addMethod.Invoke(instance, new object[] { 5, 3 });
Console.WriteLine("Result of Add: " + result);
}
}
Beste praksis for bruk av refleksjon
Her er noen anbefalte fremgangsmåter:
- Bruk refleksjon med måte, siden det kan påvirke ytelsen.
- Mellomlagre refleksjonsresultater for å forbedre effektiviteten ved gjentatte kall.
- Foretrekk løsninger som avgjøres ved kompilering fremfor refleksjon når det er mulig.
- Bruk refleksjon i dynamiske scenarioer som programtillegg og rammeverk.
Tips: Kombiner refleksjon med egendefinerte attributter for fleksible og dynamiske applikasjoner.
Godt jobbet!
Gratulerer! Du har lært hvordan du bruker refleksjon til å undersøke og endre typer under kjøring i C#. Dette avslutter kategorien "Advanced C# Features". La oss gå videre til flere kodeeventyr!

Lær deg C# med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 93
- Leksjoner
- 346
Ofte stilte spørsmål
Er leksjonen «Forstå refleksjon i C#» gratis?
Ja – hele teksten i «Forstå refleksjon i C#» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av C# Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i C# Academy inneholder totalt 5 leksjoner.
Hva lærer jeg i «Forstå refleksjon i C#»?
Bruk refleksjon til å undersøke og manipulere objekter under kjøring Du øver på C# Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med C# Academy?
Ingen tidligere erfaring er nødvendig. C# Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 5 av 5.
Hvor lang tid tar leksjonen «Forstå refleksjon i C#»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne C# Academy-leksjonen?
Ja. Alle C# Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Generics i C#
- Async og Await: Arbeide med asynkron kode
- Forstå tråder og oppgaver
- Utforske delegater og lambdaer
- Forstå refleksjon i C#