No estoy seguro de si estoy haciendo algo mal aquí o si necesita ser arreglado ...Code Contracts: Asegura no probados y no probados Requiere
que tienen una clase contenedora personalizada diccionario y aquí es un fragmento del código que es necesario.
public int Count
{
get
{
Contract.Ensures(Contract.Result<int>() >= 0);
return InternalDictionary.Count;
}
}
public bool ContainsKey(TKey key)
{
//This contract was suggested by the warning message, if I remove it
//I still get the same warning...
Contract.Ensures(!Contract.Result<bool>() || Count > 0);
return InternalDictionary.ContainsKey(key);
}
La única razón por la que añadí la línea para el ContainsKey es porque me dieron el siguiente mensaje de advertencia (y todavía lo hacen): Codecontracts: ensures unproven: !Contract.Result<bool>() || @this.Count > 0
. Me puede quitar esta línea y aún obtener el mismo problema !
¿qué es lo que hago aquí para deshacerse de estos problemas?
Actualización:
También probé (como se sugiere) ...
public Boolean ContainsKey(TKey key)
{
Contract.Requires(Count == 0 || InternalDictionary.ContainsKey(key));
Contract.Ensures(!Contract.Result<bool>() || Count > 0);
return InternalDictionary.ContainsKey(key);
}
Advertencia 5 Método 'My.Collections.Generic.ReadOnlyDictionary
2.ContainsKey(type parameter.TKey)' implements interface method 'System.Collections.Generic.IDictionary
2.ContainsKey (tipo parameter.TKey) ', por lo tanto no puede agregar Requiere.
Tenga en cuenta que la raíz de su problema es que este método es prometedor que se encontrarán todas las claves, y realmente no tiene control sobre eso. –