【发布时间】:2018-11-14 11:06:17
【问题描述】:
我想检查一个字段的字段自定义属性,该 ref 字段指向。
我有以下代码示例:
public void FieldSetter<T>(ref T field, T value, string fieldCategory)
{
GlobalDispatcher.NotifyBeforeChange(fieldCategory);
field = value;
GlobalDispatcher.NotifyAfterChange(fieldCategory);
if(true /* Check for field custom attribute*/)
GlobalDispatcher.NotifySpecialChange(fieldCategory);
}
以及以下代码用法:
[SpecialChange]
private int m_field1 = default(int);
public int Field1
{ get { return m_field1; } set { FieldSetter(ref m_field1, value, GlobalDispatcher.Ints); } }
[SpecialChange]
private string m_field2 = default(string);
public string Field2
{ get { return m_field2; } set { FieldSetter(ref m_field2, value, GlobalDispatcher.Strings); } }
我尝试实现 SpecialChangeAttribute。 我有以下想法只是为了让它发挥作用,但没有解决方案可以解决所有情况:
- 遍历类字段并使用 ReferenceEquals - 不适用于值类型。
- 从 Marshal 获取字段偏移量并与字段指针进行比较 - 无法获取托管类型 T 的地址
有什么想法或提示吗?
【问题讨论】:
-
你可以检查它是否实现了
IEquatable<>或IComparable接口 -
感谢您的回复!不幸的是,比较变量似乎无助于区分具有相同值的两个独立字段,或者我错过了这个想法