如何获得类内对象的变量名
本文关键字:变量名 对象 何获得 | 更新日期: 2023-09-27 18:12:51
我有一个类A
,它在BObject
变量中存储ref对象B
。
public class A
{
public B BObject;
}
我想在B
类构造器中获得BObject
(变量名)。
有办法吗?
这样做的目的:我想创建ODBCFramework
,我想根据变量名获得表名。(如在EntityFramework Context中)
更新:我想在c# 5中处理它
您可以使用c# -6 nameof
操作符:
var a = new A();
string bName = nameof(a.B);
请注意,通常尝试使用属性/字段的运行时名称进行表查找似乎是一个坏主意。
没有办法做你想做的。
您找不到存储对象引用的对象的名称,该信息根本不可用。
基本上是这样的:
var x = new BObject();
// from inside BObject, get the name "x"
是不可能的。您将它存储在另一个对象的字段中,这一事实并没有改变什么,它根本不能这样做。
你需要有一种方法显式地告诉对象它应该使用哪个表名
可以使用PropertyInfo类吗?
var a = B.GetInfo().GetProperties();
foreach(PropertyInfo propertyInfo in a)
string name = propertyInfo.Name
@Damien_The_Unbeliever给我一些积分来解决我的问题。我试了一下,效果不错。
public class A
{
public B BObject { get; set; }
public A()
{
var BTypeProperties = this.GetType().GetProperties().Where(x => x.PropertyType == typeof(B));
foreach (var prop in BTypeProperties)
{
prop.SetValue(this, new B(prop.Name));
}
}
}
public class B
{
string _propName;
public B(string propertyName)
{
_propName = propertyName;
}
}
同样,在回答中要明确:@Yuval Itzchakov建议c# 6的解决方案是:
var a = new A();
string bName = nameof(a.B);