У меня есть связь между двумя классами Credentials<=>UserData
. И я хотел бы использовать MemoryCache
для фильтрации моего входящего запроса.
Мои key = Credential
и value = UserData
.
(Data)MemoryCache.Default.AddOrGetExisting(GetKey(credential), // must be a string
userData,
DateTime.Now.AddMinutes(5));
Как я могу реализовать public string GetKey(Credentials credential)
для входящего запроса?
Credentials
его a DataContract
, который содержит другие DataContracts
, такие как GoogleCredentials
, FacebookCredentials
. И они содержат свои собственные strings
как user_name
и password
.
Теперь элементы кэша добавляются с помощью ключей credential.ToString()
, и важно, чтобы этот метод возвращал одно и то же значение для объектов Credentials
, имеющих одинаковые значения учетных данных, и различные значения для экземпляров Credentials
с разными значениями учетных данных.
Внутри класса Credential у меня есть следующий метод
public override int GetHashCode()
{
int hashCode = 0;
if (GoogleCredentials!= null)
{
hashCode ^= GoogleCredentials.GetHashCode();
}
if (FacebookCredentials!= null)
{
hashCode ^= FacebookCredentials.GetHashCode();
}
return hashCode;
}