狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#基礎:Reflection(反射)

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

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

C# 中的反射與示例

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

檢查類型:

反射可用于在運行時獲取有關類型的信息,例如它們的屬性、方法、字段和特性。

在運行時創建實例:

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

在運行時調用的方法和屬性:

反射可用于在運行時調用方法和屬性,這在編譯時不知道成員名稱時特別有用。

獲取和更改字段:

您可以使用反射在運行時獲取和更改對象的字段。

檢查屬性:

反射可用于檢查應用于類型、字段、方法、屬性、構造函數等的屬性,并可以根據它們應用必要的操作。

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 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved