Есть ли у C# что-нибудь вроде Python's __getattr__
?Вспомогательные блоки в C#?
У меня есть класс со многими свойствами, и все они имеют один и тот же код доступа. Я хотел бы иметь возможность полностью отказаться от отдельных аксессуаров, как в Python.
Вот что мой код выглядит сейчас:
class Foo
{
protected bool Get(string name, bool def)
{
try {
return client.Get(name);
} catch {
return def;
}
}
public bool Bar
{
get { return Get("bar", true); }
set { client.Set("bar", value); }
}
public bool Baz
{
get { return Get("baz", false); }
set { client.Set("baz", value); }
}
}
И вот что я хотел бы:
class Foo
{
public bool Get(string name)
{
try {
return client.Get(name);
} catch {
// Look-up default value in hash table and return it
}
}
public void Set(string name, object value)
{
client.Set(name, value)
}
}
Есть ли способ для достижения этой цели в C# без вызова Get
напрямую?
Спасибо,
Свойства не *, что * много (около 20), но это повторение кода в любом случае, и мне не нравится его вид. =) Я хочу использовать свойства, а не словарь по той же причине. Свойства выглядят лучше. О, и ключи клиента могут измениться. –
Это невозможно. У C# даже нет универсального #define! – wj32