0

次のシグネチャを持つ関数が必要です。

System.Reflection.PropertyInfo getPropertyInfo(System.Type type, string NavigationPath)

またはVBで:

Function GetPropertyInfo(Type As System.Type, NavigationPath As String) As System.Reflection.PropertyInfo

使用法:

Dim MyPropertyInfo As PropertyInfo = GetPropertyInfo(GetType(Order),"Customer.Address.State.Code")
Dim DisplayName As String = MyStringFunctions.FriendlyName(MyPropertyInfo.Name)

ピリオド区切りのパス ナビゲーションを使用します。これを行うためにデータバインディング フレームワークを利用する方法がわかりません。最初のハードルは、オブジェクト (型ではなく) だけを操作したいように見えることです。2 番目のハードルは、コントロールの外部にあるオブジェクトを操作することさえできなかったことです。データバインディングが型とプロパティ型を扱う場所のどこかで内部的に考えます。それはしなければならないでしょう!

ありがとう!

4

2 に答える 2

0

データ バインディングでは、プロパティ自体ではなくプロパティの値が必要です (つまり、objectではなく戻り値PropertyInfo)。

This similar questionは、メソッドが実際にその値ではなくプロパティを返すようにしたい場合に備えて、簡単に変更できる実装を提供します。

于 2012-06-26T19:22:31.343 に答える
0

これが私が思いついたもので、バインディング インフラストラクチャを使用しません。私はまだバインディングがより良い仕事をすると思います。

  Function GetPropertyInfo(Type As System.Type, NavigationPath As String) As System.Reflection.PropertyInfo
    For Each Part As String In NavigationPath.Split(".")
      GetPropertyInfo = Type.GetProperty(Part)
      If GetPropertyInfo IsNot Nothing Then
        Type = GetPropertyInfo.PropertyType
      End If
    Next
  End Function
于 2012-06-26T20:01:32.617 に答える