J'ai une classe qui contient des membres append comme pour chaque type primitif, cordes et INetSerializable:Déballage un type d'objet à un type primitif et d'autres (simulant la liaison tardive)
public class TypeAppender
{
public void Append(int i) {}
public void Append(double d) {}
public void Append(string s){}i){}
public void Append(INetSerializable ins){}
}
d'une autre classe, Je veux appeler cette méthode « générique pour ainsi dire », en passant l'objet
dire que j'ai quelque chose comme ça:
class SomeClientClass
{
TypeAppender _appender=new TypeAppender();
Dictionary<string, Object> _cmdTable =new Dictionary<string, Object>();
public void Process()
{
foreach(KeyValuePair<string, Object> pair in cmdTable)
{
_appender.Append(pair.Key);
Object obj = pair.Value;
if (obj is int)
_appender..Append((int)obj);
else if (obj is double)
_appender..Append((double)obj);
else if (obj is char)
_appender..Append((char)obj);
else if (obj is string)
_appender..Append((string)obj);
}
}
public void AddParam<T>(string key, T value)
{
_cmdTable.Add(key, value);
}
}
question n ° 1: Est-ce que pair.Value sera déballé à une primitive correcte? s
Question n ° 2: Problème avec la fonction membre AddParam?
Merci
Ce sera douloureux. Des solutions de contournement autres que celles que vous avez indiquées ou ayant des Dictionnaires différents pour chaque type pris en charge? –
@Sasha, malheureusement, sans un mécanisme de liaison tardive (VB ou C# 4.0) c'est vraiment vous êtes seule option. – JaredPar
Merci, appliqué votre méthode :) –