I have upgraded to the new version of CSLA for Silverlight a few days ago. I'm getting the following exception we I do a build in Release mode. If I do a build in Debug mode, I don't get the exception.
I get the following exception:
Message: An item with the same key has already been added.
Stack Trace: at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at Csla.Core.FieldManager.FieldDataManager.GetConsolidatedList(Type type)
at Csla.Core.FieldManager.FieldDataManager.OnSetState(SerializationInfo info, StateMode mode)
at Csla.Core.MobileObject.Csla.Serialization.Mobile.IMobileObject.SetState(SerializationInfo info)
at Csla.Serialization.Mobile.MobileFormatter.DeserializeAsDTO(List`1 deserialized)
at Csla.Serialization.Mobile.MobileFormatter.Deserialize(XmlReader reader)
at Csla.DataPortalClient.WcfProxy`1.proxy_FetchCompleted(Object sender, FetchCompletedEventArgs e)
So looking at the method that is throwing the exception, I'm really not sure why it is happening.
private static List<IPropertyInfo> GetConsolidatedList(Type type)
{
List<IPropertyInfo> result = null;
if (!_consolidatedLists.TryGetValue(type, out result))
{
lock (_consolidatedLists)
{
if (!_consolidatedLists.TryGetValue(type, out result))
{
result = CreateConsolidatedList(type);
_consolidatedLists.Add(type, result);
}
}
}
return result;
}
Does anyone have any ideas for fixing this?
Thanks,
Todd
Did you ever find out what the root cause and/or fix is for this?
This sounds exactly like the kind of problem you'd encounter if your PropertyInfo<T> fields are not public.
Copyright (c) Marimer LLC