• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

C#反射相关问题

哆嗦A梦 2020-11-07 10:07:46
有个 C#相关问题咨询下各位大佬: 比如我有个这样的类 class person {

public int Age{get;set;}

public string Name{get;set;}

public void Run();

public void SaySomeThing(string words);

public otherObject Others{get; private set;} //这个对象里面还有属性或方法
}
我现在想实现功能就是我在用户界面上对这个类的属性进行访问赋值,例如这样 我创建了一个小红的 person,界面上我选择了小红后,那么属性 AGE 经过翻译后显示为[年龄],后面有个数字框 用户可以输入 50,选择 name 属性,经过翻译后显示为[姓名],后面显示一个文本框,让用户可以赋值.

用户可以调用 RUN 方法.调用有参数的 SaySomeThing 方法.

同时,如果是其它对象,下面还会显示该对象的属性这样子..

我知道会用到反射.但具体不知该怎么做最好.

请大佬指点迷津,因为自学 C#,平时就偶尔写写小程序,没有多少经验..所以遇到高级功能就蒙逼了.
...全文
454 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
真的小白啊 2020-11-07
当然了可以去了解一下反射和依赖注入 https://www.bilibili.com/video/BV1wx411K7rb?p=30
回复
真的小白啊 2020-11-07
各位大佬,献丑了

	public class Program
	{
		private static void Main(string[] args)
		{
			Person xiaoHong = new Person();
			xiaoHong.GetType().GetProperty("Name").SetValue(xiaoHong, "小红");
			xiaoHong.GetType().GetProperty("Age").SetValue(xiaoHong, 10);
			xiaoHong.GetType().GetMethod("SaySomeThing").Invoke(xiaoHong, new object[] { "Hello World!" });

			Person xiaoMing = new Person() { Age = 20, Name = "小明" };
			xiaoMing.SaySomeThing("Nice to meet you!");

			Console.ReadKey();
		}
	}

	public class Person
	{
		public string Name { get; set; }

		public int Age { get; set; }

		public void SaySomeThing(string words)
		{
			string text = $"My name is {Name}, I'm {Age} years old. This is my first code '{words}'.";
			Console.WriteLine(text);
		}
	}

回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2020-11-07 10:07
社区公告

让您成为最强悍的C#开发者