Est-ce que C# a quelque chose comme __getattr__
de Python?Les accesseurs de repli en C#?
J'ai une classe avec beaucoup de propriétés, et ils partagent tous le même code d'accesseur. Je voudrais être capable de supprimer complètement les accesseurs individuels, comme en Python.
Voici ce que mon code ressemble maintenant:
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); }
}
}
Et voici ce que je voudrais:
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)
}
}
Est-il possible d'y parvenir en C# sans appeler Get
directement?
Merci,
Les propriétés ne sont pas * nombreuses * (environ 20), mais c'est la répétition de code quand même, et je n'aime pas la voir. =) Je veux utiliser des propriétés plutôt qu'un dictionnaire pour la même raison. Les propriétés sont plus belles. Oh, et les clés du client pourraient changer. –
C'est impossible. C# n'a même pas de #define à usage général! – wj32