有没有办法将 变量名 转换成 字符串?解决思路

有没有办法将 变量名 转换成 字符串?
比如
class Bus
{
    public string Name {get; set;}
    public int No {get; set;}
}
Bus bus = new Bus();

某个函数
void Foo(string item) {...}       //item是属性名

比如,Foo("Name")或 Foo("No")    //这是最终要求
可是总觉得这个"字符串参数"不够好
我想:
      如果Foo改一下能接受 
             bus.Name, bus.No
             (或改成static的) Bus.Name , Bus.No 
      这样的参数,再内部转换成 最终要求的string名字

有没有什么办法
谢谢了呀!~~~~
------解决思路----------------------
关键在于你Foo函数里面要怎么用这个属性名。
如果是想在Foo函数里这样使用“bus.属性名”,那可以用反射。
------解决思路----------------------
这里要用到反射了。请自行查阅反射相关内容。
------解决思路----------------------
你可以传入PropertyInfo,如下
void Foo(PropertyInfo prop)
{
     string name = prop.Name;
}

------解决思路----------------------
如果你用VS2015,那么C# 6.0支持一个新的关键字
nameof(变量名)

------解决思路----------------------
可以用 Expression,现在很多框架都是这么做的,例如:

public class Bus
{
    public string Name { get; set; }
    public int No { get; set; }
}

public void Foo<T>(Expression<Func<Bus, T>> propertyExpr)
{
    // 获取属性的名字
    var name = ((MemberExpression)propertyExpr.Body).Member.Name;
    // ...
}

// 使用时
Foo(b => b.Name);