J'écris actuellement une interface pour permettre aux applications d'envoyer des données d'exception à un référentiel central à des fins de support. Je suis à une situation embarrassante sur la façon de transmettre des données supplémentaires contextuelles:IDictionary <string, string> ou NameValueCollection
public interface IExceptionNotifier
{
void Notify(Exception ex, NameValueCollection context); //this
void Notify(Exception ex, IDictionary<string, string> context); //or this
}
Je me suis souvent trouvé est une position similaire lors de la création lookups. Ignorer si le concept du notificateur d'exception est bon, est-il préférable d'utiliser un IDictionary<string, string>
ou un NameValueCollection
? Pourquoi choisiriez-vous l'un par rapport à l'autre?
Pourriez-vous développer «sous le contrôle de ce que vous obtiendrez réellement de votre interlocuteur»? La possibilité d'un appelant d'envoyer des clés en double est-elle le problème? Je suppose que je ne comprends pas très bien pourquoi vous évitez un dictionnaire si la sérialisation est en cause. –
@JeffBridgman: C'était il y a près de dix ans, je ne me souviens pas de ce que je voulais dire;) Je suppose qu'il s'agit d'obtenir un objet d'une classe spécifique (ie avec certaines contraintes comme le support de sérialisation), ou d'obtenir * une certaine interface. Par exemple, l'implémentation IDictionary peut ne pas prendre en charge la sérialisation ou certaines méthodes, tandis que NameValueCollection est une implémentation fixe, elle dépend donc de ce que vous voulez faire avec le contexte. Notez qu'il y a plusieurs autres questions à ce sujet sur SO avec des discussions intéressantes. – OregonGhost