欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#基礎(chǔ):Reflection(反射)

admin
2024年8月17日 20:11 本文熱度 827

使用 Reflection,任何人都可以動態(tài)地確定程序的類型、方法、屬性、構(gòu)造函數(shù)和其他成員,而無需在編譯時(shí)了解它們。反射提供了一種以靈活方式與類型和對象交互的強(qiáng)大方法。您可以使用反射來獲取有關(guān)類型中定義的事件的信息,例如它們的名稱、事件處理程序和其他元數(shù)據(jù)。

C# 中的反射與示例

以下是 C# 中反射的一些常見用法:

檢查類型:

反射可用于在運(yùn)行時(shí)獲取有關(guān)類型的信息,例如它們的屬性、方法、字段和特性。

在運(yùn)行時(shí)創(chuàng)建實(shí)例:

您可以使用反射在運(yùn)行時(shí)創(chuàng)建類型(屬性、方法、字段和特性)的實(shí)例,即使您在運(yùn)行時(shí)只知道類型(屬性、方法、字段和屬性)名稱。

在運(yùn)行時(shí)調(diào)用的方法和屬性:

反射可用于在運(yùn)行時(shí)調(diào)用方法和屬性,這在編譯時(shí)不知道成員名稱時(shí)特別有用。

獲取和更改字段:

您可以使用反射在運(yùn)行時(shí)獲取和更改對象的字段。

檢查屬性:

反射可用于檢查應(yīng)用于類型、字段、方法、屬性、構(gòu)造函數(shù)等的屬性,并可以根據(jù)它們應(yīng)用必要的操作。

C# 中的反射與示例

using System;  
using System.Reflection;
public class FruitClass
{
public string fruitName { get; set; }
public void getFruitName()
{
Console.WriteLine("Name of Fruit is = " + fruitName);
}
}


class Program
{
public static void Main(string[] args)
{
// Get assembly dynamically
Type t = typeof(System.String);
Console.WriteLine(t.Assembly);
Console.WriteLine(t.FullName);
Console.WriteLine(t.BaseType);
Console.WriteLine(t.IsClass);
Console.WriteLine(t.IsEnum);
Console.WriteLine(t.IsInterface);
Console.WriteLine(t.Name);
Console.WriteLine(t.Namespace);
Console.WriteLine(t.Module);
// Get the type dynamically
Type fruitType = typeof(FruitClass);
// Create an instance of the type dynamically
object fruitInstance = Activator.CreateInstance(fruitType);
// Access a property dynamically
PropertyInfo propertyInfo = fruitType.GetProperty("fruitName");
propertyInfo.SetValue(fruitInstance, "Mango, Reflection");
// Invoke a method dynamically
MethodInfo methodInfo = fruitType.GetMethod("getFruitName");
methodInfo.Invoke(fruitInstance, null);
// Access the property value
string propertyValue = (string)propertyInfo.GetValue(fruitInstance);
Console.WriteLine("Property value: " + propertyValue);
}
}

輸出

System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e  
System.String
System.Object
True
False
False
String
System
System.Private.CoreLib.dll
Name of Fruit is = Mango, Reflection
Property value: Mango, Reflection

C# 中使用枚舉示例的反射

using System;  
using System.Reflection;
public class EventExample
{
public event EventHandler FruitEvent;
public void OnMyEvent()
{
// Raise the event
FruitEvent .Invoke(this, EventArgs.Empty);
}
}


class Program
{
public static void Main(string[] args)
{
// Create an instance of the class
EventExample example = new EventExample();
// Get the type of the class
Type type = example.GetType();
// Get the events defined in the class
EventInfo[] events = type.GetEvents();
// Display information about each event
foreach (EventInfo evt in events)
{
Console.WriteLine($"Event Name: {evt.Name}");
// Display information about the event handler delegate type
Console.WriteLine($"Event Handler Type: {evt.EventHandlerType}");
}
}
}

輸出

Event Name: FruitEvent  
Event Handler Type: System.EventHandlert

C# 中的反射與事件示例

using System;  
using System.Reflection;
public enum FruitEnumName
{
Apple,
Banana,
Mango,
Grape,
Orange,
Cherry,
Kiwi
}


class Program
{
public static void Main(string[] args)
{
// Get assembly dynamically
Type enumType = typeof(FruitEnumName);
// Display the name of the enum
Console.WriteLine($"Enum Name: {enumType.Name}");
Console.WriteLine(enumType.IsEnum);
// Get enum values
Array enumValues = Enum.GetValues(enumType);
foreach (object value in enumValues)
{
// Display enum value name and underlying string value
Console.WriteLine($"Name: {Enum.GetName(enumType, value)}, Value: {(object)value}");
// Get the type dynamically
Type fruitEnumType = typeof(FruitEnumName);
// Create an instance of the type dynamically
object fruitEnumInstance = Activator.CreateInstance(fruitEnumType);
// Access a enum dynamically
string enumInstance = enumType.GetEnumName(fruitEnumInstance);
Console.WriteLine("Enum value: " + enumInstance);
}
}
}

輸出

Enum Name: FruitEnumName  
True
Name: Apple, Value: Apple
Enum value: Apple
Name: Banana, Value: Banana
Enum value: Apple
Name: Mango, Value: Mango
Enum value: Apple
Name: Grape, Value: Grape
Enum value: Apple
Name: Orange, Value: Orange
Enum value: Apple
Name: Cherry, Value: Cherry
Enum value: Apple
Name: Kiwi, Value: Kiwi
Enum value: Apple

該文章在 2024/8/19 11:05:43 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved