C# PostSharp get_属性错误

C# PostSharp get_属性错误,c#,dictionary,telerik,postsharp,radgridview,C#,Dictionary,Telerik,Postsharp,Radgridview,我正在使用Telerik的PostSharp和RadGridView。某些列具有使用DataTypeConverter的自定义数据,我使用DataTypeConverter从名为Name的属性(类型为AdvisableDictionary)加载值 网格具有“筛选”按钮,单击时将显示一个带有类似Excel的筛选选项的弹出窗口 但是,当我单击此按钮时,会出现一个错误,提示无法比较数组中的两个元素。这仅适用于具有此类型数据的列。我对PostSharp没有太多经验,但我认为这是PostSharp产生的

我正在使用Telerik的PostSharp和RadGridView。某些列具有使用DataTypeConverter的自定义数据,我使用DataTypeConverter从名为
Name
的属性(类型为
AdvisableDictionary
)加载值

网格具有“筛选”按钮,单击时将显示一个带有类似Excel的筛选选项的弹出窗口

但是,当我单击此按钮时,会出现一个错误,提示
无法比较数组中的两个元素。
这仅适用于具有此类型数据的列。我对PostSharp没有太多经验,但我认为这是PostSharp产生的

以下是PostSharp抛出异常之前输出窗口的最后几行:

The thread 0x3964 has exited with code 0 (0x0).

The thread 0x364 has exited with code 0 (0x0).

Step into: Stepping over non-user code 'TranslatableObject.get_Name'

Step into: Stepping over non-user code 'TranslatableObject.<Name>c__Binding1.GetValue'

Step into: Stepping over non-user code 'TranslatableObject.<Name>c__Binding1.get_LocationInfo'

Step into: Stepping over non-user code 'TranslatableObject.<Name>c__Binding.GetValue'
线程0x3964已退出,代码为0(0x0)。
线程0x364已退出,代码为0(0x0)。
单步执行:单步执行非用户代码“TranslateableObject.get\u Name”
单步执行:单步执行非用户代码“translateableobject.c\u Binding1.GetValue”
单步执行:单步执行非用户代码“translateableobject.c\u Binding1.get\u LocationInfo”
单步执行:单步执行非用户代码“translateableObject.c\u Binding.GetValue”

如何解决此错误?

我找到了一个解决方案:
advisabledictionary
不实现用于对项目列表排序的IComparable

我创建了一个类来继承
AdvisableDictionary
并在过滤器弹出窗口的
FilterConfirmed
事件中实现
IComparable


我更正了筛选器描述符的值。

您可以创建一个类来继承AdvisableDictionary并实现IComparable

public class AdvisableDictionary: IComparable
{
    //here add the code from your heart
}

因此,在FilterPopup的FilterConfigure事件中,您需要更正筛选器描述符的值,这很简单

就这样

这是一个样本。请看一看。享受c#编程的乐趣


这是我的解决方案,需要尝试,成为老板,努力,快乐:)

请将堆栈跟踪和异常的完整消息粘贴到这里好吗?如果您分享一个复制这种行为的最小示例,它也将有助于确定原因。谢谢!这是一个示例项目。我找到了如下答案中所示的解决方案。