C#中怎么根据名字找到属性
比如classA{publicstringB{get;set;}publicstringC{get;set;}publicstringgetone(stringname)...
比如 class A { public string B{get;set;} public string C{get;set;} public string getone(string name) { ........// 根据比如 name == “A” 返回A的值 name == “B” 返回B的值 } }
展开
4个回答
展开全部
class A
{
public string B{get;set;}
public string C{get;set;}
public A()
{
B = "BB";
C = "CC";
}
public string getone(string name)
{
if (String.Compare(name, "B") == 0)
return this.B;
else
return this.C;
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
string res = a.getone("B"); //得到“BB”
res = a.getone("C"); //得到“CC”
}
}
追问
谢谢你的回答,不过其实我的意思不是这样。
你这样写的话,每增加一个属性就要多一种case,我的意思是一种通用函数,当获取string x 的时候 它会判断类中是不是存在名字和 x 一样的属性,并返回。就好像反射一样
展开全部
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
Type type = typeof(A);
A a = new A();
PropertyInfo pi = type.GetProperty("B");
Console.WriteLine(pi.GetValue(a, null));
Console.ReadLine();
//输出BB
}
}
public class A
{
public A()
{
B = "BB";
}
public string B { get; set; }
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
PropertyInfo info=type.GetProperty("pname");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
反射,具体看书
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询