添加Lesson21

This commit is contained in:
2025-11-05 10:39:06 +08:00
parent ed22d4bcbd
commit 7ca83872f3
6 changed files with 262 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
using System.Reflection;
namespace Lesson21_特性练习
{
internal class Program
{
static void Main(string[] args)
{
Assembly assembly = Assembly.LoadFrom(@"D:\VisualStudio2022\VisualStudio Programe\C#\C#进阶\反射练习库\bin\Debug\反射练习库");
Type[] types = assembly.GetTypes();
for (int i = 0; i < types.Length; i++)
{
Console.WriteLine(types[i]);
}
//得type
Type playertype = assembly.GetType("反射练习库.Player");
//实例化对象
object playerObj = Activator.CreateInstance(playertype);
Console.WriteLine(playerObj);
FieldInfo[] fields = playertype.GetFields();
for (int i = 0; i < fields.Length; i++)
{
Console.WriteLine(fields[i]);
}
//首先得到自定义特性的Type
Type atrribute = assembly.GetType("反射练习库.MyCustomAttribute");
//赋值名字
FieldInfo fieldStr = playertype.GetField("name");
if(fieldStr.GetCustomAttribute(atrribute) != null)
{
Console.WriteLine("非法操作,随意修改name成员");
}
else
{
//检测是否被自定义特性修饰 如果是 就不能更改 而是提示
fieldStr.SetValue(playerObj, "123123");
}
}
}
}