我需要使我的自定义对象在字典、列表等中正常工作......这样我就可以更改对象的属性,并允许它被使用,而不是孤立。
上次我尝试覆盖 GetHashCode() 时,当我将对象添加到字典时,我孤立了对象,对对象进行了更改(更改了 GetHashCode),这以某种方式导致字典无法正确地从内存中处理对象。
问题
有人可以解释一下:
我需要在 TrustedEntityReference 中覆盖哪些接口和接口才能连接
int
并TrustedEntity
在排序字典中正常工作?对于 .NET 字典对象中使用的内容,哪些值决不能更改,否则会冒着孤立对象的风险?(例如,更改对象发出的哈希码可能会导致字典出现 GC 问题)
这是我正在处理的当前示例对象。
namespace Model
{
public class TrustedEntity
{
public TrustedEntity()
{
this.BackTrustLink = new List<TrustedEntityReference>();
this.ForwardTrustLink = new List<TrustedEntityReference>();
}
public List<TrustedEntityReference> BackTrustLink { get; set; }
public string EntryName { get; set; }
public List<TrustedEntityReference> ForwardTrustLink { get; set; }
}
// This is the object I want to be treated as a "key" in the above List<T>
// I want a duplicate object exception to occur if a duplicate TrustedEntityReference is inserted into trustedEntity.BackTrustLink or trustedEntity.ForwardTrustLink
public class TrustedEntityReference
{
public int HierarchyDepth { get; set; }
public TrustedEntity TrustedEntity {get; set; }
}
}