如何获取某个对象的某个字段的名称字符串

danmali 2014-08-16 09:36:27
Class A{
string Title;
}

A a=new A();
a.Title

用什么方法可以获取到"Title"

Method(a.Title)=="Title"
...全文
786 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
AI-剁椒鱼头 2018-09-24
  • 打赏
  • 举报
回复
https://blog.csdn.net/weixin_43251547/article/details/82826668
获取类型字段名称字符串
alanzyy 2016-01-28
  • 打赏
  • 举报
回复
nameof(a.Title)
於黾 2014-08-22
  • 打赏
  • 举报
回复
Method(a.Title,fieldName) // 这样调用可以用vs .出Title来 用vs是否能.出属性,跟你运行时是两个概念 你想vs里可读性好,那就一个一个switch吧 正常应该是数据库里指定fieldname对应程序里的属性叫什么名,然后反射给属性赋值,这样才能少写代码 当然这样可读性就不好,需要到数据库里去看到底赋值给谁 总之,要么可读性好,要么代码简洁,鱼与熊掌不可兼得. 你把300行代码简化成3行,还能从中读出具体的执行逻辑,那是做梦呢.
danmali 2014-08-22
  • 打赏
  • 举报
回复
感谢各位,其实 对于 a.Title 我最终想要的结果是: 我不知道 A 类 有没有 Title这个属性,我现在只知道一个数据库的字段 fieldName,我需要一个设置程序,我预先把 fieldName 与一个类 A 的Title属相绑定,告诉这个方法,给我生成一个A 类的对象 a,其中数据库字段 fieldName 的数值是要赋值给a 的Title属性的。当然 如果通过字符串的方式,我可以解决这个问题 Method("Title",fieldName) ,但是这样会影响可读性。这个方法如下 public A Method(propertyName,fieldName); Method("Title",fieldName) //这样调用需要写字符串 Method(a.Title,fieldName) // 这样调用可以用vs .出Title来。
PaulyJiang 2014-08-18
  • 打赏
  • 举报
回复
反射所有属性,然后直接绑定
於黾 2014-08-18
  • 打赏
  • 举报
回复
fields.add(Method(a.Title)); fields.add(Method(a.Name)); fields.add(Method(a.Address)); 如果你想一个一个加,那还转来转去干嘛 直接 fields.add("Title"); 不就得了 除非你是想做个循环,遍历所有属性,然后再把属性名取出来
liqiucu 2014-08-17
  • 打赏
  • 举报
回复
引用 4 楼 danmali 的回复:
非常感谢兄台持之以恒的帮助! 我是想用一个方法,能把我输入的相关变量的名称保存为一个数组,用于其它的一些操作。 如: private List<string> fields=new List<string>(); fields.add(Method(a.Title)); fields.add(Method(a.Name)); fields.add(Method(a.Address)); 现在这个fields里面有三个数值,"Title" "Name" "Address"
参数名字你自己不是已经知道了吗?根本不需要反射的! 你的method(object obj), 调用的时候直接传 "Title", "Name", "Address", obj的参数参数类型也可以直接改成string, 反正你的fields 是string集合
ZhongGuanYao 2014-08-17
  • 打赏
  • 举报
回复
LZ用反射技术吧
danmali 2014-08-16
  • 打赏
  • 举报
回复
非常感谢兄台持之以恒的帮助! 我是想用一个方法,能把我输入的相关变量的名称保存为一个数组,用于其它的一些操作。 如: private List<string> fields=new List<string>(); fields.add(Method(a.Title)); fields.add(Method(a.Name)); fields.add(Method(a.Address)); 现在这个fields里面有三个数值,"Title" "Name" "Address"
liqiucu 2014-08-16
  • 打赏
  • 举报
回复
额 title 改成Title
class Program
    {
        static void Main(string[] args)
        {
            ClassA a = new ClassA();
            var result = a.GetType().GetFields
                (
                BindingFlags.NonPublic | 
                BindingFlags.Instance
                ).Single(t => t.Name == "Title").GetValue(a);       
        }
    }

    public class ClassA
    {
        string Title="test";
    }
liqiucu 2014-08-16
  • 打赏
  • 举报
回复
class Program
    {
        static void Main(string[] args)
        {
            ClassA a = new ClassA();
            var result = a.GetType().GetFields
                (
                BindingFlags.NonPublic | 
                BindingFlags.Instance
                ).Single(t => t.Name == "title").GetValue(a);       
        }
    }

    public class ClassA
    {
        string Title="test";
    }
liqiucu 2014-08-16
  • 打赏
  • 举报
回复
var result = a.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance).Single(t => t.Name == "title").GetValue(a);

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧