[英]How to get variable name of object inside class?
我有一個類A
,它在BObject
變量中存儲對對象B
引用。
public class A
{
public B BObject;
}
我想在B
類構造函數中獲取BObject
(變量的名稱)。
有什么辦法嗎?
這樣做的目的:我想創建ODBCFramework
並且要基於變量名獲取表名。 (就像在EntityFramework上下文中一樣)
更新:我想在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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.