共有ライブラリにカスタム添付プロパティがあります:
public class Freezable
{
public static bool GetIsFrozen(DependencyObject obj)
{
return (bool)obj.GetValue(IsFrozenProperty);
}
public static void SetIsFrozen(DependencyObject obj, bool value)
{
obj.SetValue(IsFrozenProperty, value);
}
public static readonly DependencyProperty IsFrozenProperty =
DependencyProperty.RegisterAttached("IsFrozen", typeof(bool), typeof(UIElement), new UIPropertyMetadata(false));
}
このプロパティはコードでテストされ、値が正常に保存されました。
Freezable.SetIsFrozen(control, value);
var correctValue =Freezable.GetIsFrozen(control);
しかし、その後、リフレクションを介して自分のプロパティを取得しようとしています。そして、プロパティが見つからないという例外があります(getMethodがnullでsetMethodがnullです)!
public void FindAttachedProperty(Type elementType, string propertyName)
{
MethodInfo getMethod = elementType.GetMethod("Get" + propertyName, BindingFlags.Public | BindingFlags.Static);
MethodInfo setMethod = elementType.GetMethod("Set" + propertyName, BindingFlags.Public | BindingFlags.Static);
}
Canvas.Left、Canvas.Right は問題なく正常に動作します。私が間違っていることと、添付されたプロパティを取得できない理由!?