3 回答

TA貢獻1865條經驗 獲得超7個贊
您可以像這樣在 C# 中使用反射:
var prop=row.GetType().GetProperty("id");
prop.SetValue(row,"id123");

TA貢獻1921條經驗 獲得超9個贊
要回答您的確切問題,您可以創建一個自定義索引器:
public object this[string key]
{
get
{
switch(key)
{
case nameof(id): return id;
case nameof(full_name): return full_name;
case nameof(email): return email;
default: throw new ArgumentOutOfRangeException();
}
}
set
{
switch(key)
{
case nameof(id):
id = value.ToString();
break;
case nameof(full_name):
full_name = value.ToString();
break;
case nameof(email):
email = value.ToString();
break;
default: throw new ArgumentOutOfRangeException();
}
}
}
public void Foo()
{
var row = new Row();
row["id"] = "Foo";
}
或者你像 TSungur 回答的那樣使用反射:
public object this[string key]
{
get
{
var prop = GetType().GetProperty(key);
return prop.GetValue(this);
}
set
{
var prop = GetType().GetProperty(key);
prop.SetValue(this, value);
}
}
但是,如果我是你,我會審查你當前的圖書館設計??赡苣胧褂孟馝ntity Framework這樣的 ORM ,它會為您完成所有映射。

TA貢獻1786條經驗 獲得超13個贊
C# 是一種強類型語言。這意味著一旦定義了類型,您就不能在運行時動態更改它*。您也不能像在 JavaScript 中那樣使用 [] 訪問對象的屬性。因此,您無法在 C# 中實現您想要的。C# 方式很可能是直接通過row.id = "id23";
. 在 C# 中,您總是在編譯時知道對象上有哪些屬性和方法可用。Dictionary
如果您需要更多的靈活性,您還可以使用 aKeyValuePair
或簡單地使用 a List
。
*實際上有一個動態關鍵字可以為您提供某些功能 - 但在所有地方使用它并不常見。來自 JavaScript 我建議暫時忘記它。幾乎總是有另一種“更像 C#”的方式。
- 3 回答
- 0 關注
- 151 瀏覽
添加回答
舉報