몇 가지 이상한 문제가 있습니다.'포함'메서드가 false를 반환합니다.
나는 요소가 들어있는 EntityCollection<T>
을 가지고 있지만 Contains 메서드는 false를 반환합니다.
나는 T의 'Equals'메소드를 오버라이드했지만 'Contains'메소드는 그것을 호출하지 않는다.
내가 foreach (T x in coll)
일 때 x.Equals(element)
이 true를 반환합니다.
도움 주셔서 감사합니다.
코드 :
contains(object entCol, object val)
{
var coll = (ICollection<GraphicSockets>)entCol;
var socket = val as GraphicSockets;
foreach (GraphicSockets sock in coll)
socket.Equals(sock); //true for first element, GraphicSocket's Equals function called
coll.Contains(socket);//false, Equals function not called}
내가 실제로 사용하려는 코드
이 번 일을하지만 난 WCF를 사용하기 시작하면 중지private static bool contains(object entCol, object val)
{
Type entColType = typeof(EntityCollection<>).MakeGenericType(val.GetType());
MethodInfo contains = entColType.GetMethod("Contains");
return (bool)contains.Invoke(entCol, new object[] { val });
}
, 난이 방법은 작동이 포함되어 궁금하다 .. ...
또한 'GetHashCode()'메소드를 재정의 했습니까? – adrianbanks
예, thx – kra
'GetHashCode' 오버라이드 코드 게시 - 버그가있는 경우'Equals'가 실행되지 않습니다. –