으로 목록
IEquatable
인터페이스를 구현하려고 시도했다. 여기에 내가 지금까지 무엇을했는지 있습니다 :
/// <summary>
/// A object holder that contains a service and its current failcount
/// </summary>
public class ServiceHolder : IEquatable<ServiceHolder>
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="service"></param>
public ServiceHolder(Service service)
{
Service = service;
CurrentFailCount = 0;
}
public Service Service { get; set; }
public UInt16 CurrentFailCount { get; set; }
/// <summary>
/// Public equal method
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public override bool Equals(object obj)
{
if (obj == null)
{
return false;
}
ServiceHolder tmp = obj as ServiceHolder;
if (tmp == null)
{
return false;
}
else
{
return Equals(tmp);
}
}
/// <summary>
/// Checks the internal components compared to one annother
/// </summary>
/// <param name="serviceHolder"></param>
/// <returns>tru eif they are the same else false</returns>
public bool Equals(ServiceHolder serviceHolder)
{
if (serviceHolder == null)
{
return false;
}
if (this.Service.Id == serviceHolder.Service.Id)
{
if (this.Service.IpAddress == serviceHolder.Service.IpAddress)
{
if (this.Service.Port == serviceHolder.Service.Port)
{
if (this.Service.PollInterval == serviceHolder.Service.PollInterval)
{
if (this.Service.ServiceType == serviceHolder.Service.ServiceType)
{
if (this.Service.Location == serviceHolder.Service.Location)
{
if (this.Service.Name == this.Service.Name)
{
return true;
}
}
}
}
}
}
}
return false;
}
}
을하고 나는 그것을 사용하는 곳이다 : 나는 디버깅 및 등호 (=)가 결코 명중 않겠다 기능에 내가 브레이크 포인트를 넣을 때 지금
private void CheckIfServicesHaveChangedEvent()
{
IList<ServiceHolder> tmp;
using (var db = new EFServiceRepository())
{
tmp = GetServiceHolders(db.GetAll());
}
if (tmp.Equals(Services))
{
StateChanged = true;
}
else
{
StateChanged = false;
}
}
합니다.
이것은 내가 잘못 구현했거나 올바르게 호출하지 않은 것으로 생각됩니다.
'tmp'는 하나의 'ServiceHolder'가 아닌 목록입니다. –
두리스트를 비교합니까? – Zapnologica
일반적인 스타일 가이드 라인으로,'tmp' 같은 변수 이름을 사용하지 마십시오. 변수의 타입이 'ServiceHolder'라면,'serviceHolder'라고 부를 수 있습니다. 그것이 'ServiceHolder' 타입의 객체들의 콜렉션이라면, 당신은 그것을'serviceHolders'라고 부를 수 있습니다. 처음에 여러 개의 tmp를 보았을 때 나는 같은 유형을 공유한다고 생각했습니다. 유형 혼란을 조장해서는 안됩니다. – dureuill