Чтобы ответить на ваш точный вопрос, вы можете создать собственный индексатор:
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";
}
Или вы используете отражение , как ответил Цунгур:
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);
}
}
ОднакоНа вашем месте я бы пересмотрел ваш текущий дизайн библиотеки.Возможно, вы хотите использовать ORM, такой как Entity Framework , который сделает все сопоставления за вас.