添加Lesson21
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user