我有一些奇怪的问题。
我有一个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}
我实际上想使用的代码是
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 });
}
这工作了一次,但是当我开始使用 wcf 时就停止了,我想知道这个 contains 方法是如何工作的.....