gpt4 book ai didi

c# - TypeDescriptor.AddAttributes() 替换当前属性而不是添加它

转载 作者:行者123 更新时间:2023-12-04 06:43:07 30 4
gpt4 key购买 nike

我有这部分代码:

var hasAttribute = TypeDescriptor.GetAttributes(property.DeclaringType).OfType<CrmTypeAttribute>()
.Any((attr)
=> ((CrmTypeAttribute)attr).Name == property.Name);

if (!hasAttribute)
{
var crmTypeAttribute = new CrmTypeAttribute(property.Name, crmType);
TypeDescriptor.AddAttributes(property.DeclaringType, crmTypeAttribute);
}

它有两个问题:
  • 出于某种原因,OfType 返回一个空的 IEnumerable,尽管它应该返回该类型的正确属性,我进行了检查。他们存在。
  • 这是严重的问题。它没有添加属性,而是使用 crmTypeAttribute 替换相同类型的旧属性。 我已将 AllowMultiple 标记为 true。

  • 谁能告诉我这段代码有什么问题?
    编辑:
    出于某种原因,它只允许添加一个属性类型的属性,我在运行时添加了另一种属性类型并且它起作用了。

    最佳答案

    原来,该属性需要覆盖 Attribute 类的 TypeId 属性才能不被视为重复。
    here有关详细信息,它非常隐蔽,也应该在 GetAttributes 中提及。

    关于c# - TypeDescriptor.AddAttributes() 替换当前属性而不是添加它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3997471/

    30 4 1
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com