2009-04-24 26 views
3

フラット化オブジェクト階層のサポートに使用するカスタムプロパティ記述子があります。カスタムプロパティ記述子とフラット化階層

これを達成するために、PropertyDescriptorをサブクラス化し、値を取得したい "次の"(子)プロパティにリンクリストを格納します。

これにより、サブプロパティを「フラット」な方法でグリッド(Excelにエクスポートするなど)にバインドすることができます。

例えば、 グリッド(バインドプロパティ、キャプション)

Col1:Customer.Name(Customer) 
Col2:Customer.Address(Address) 
Col3:Customer.OutstandingOrders.Count(Outstanding Orders) 

問題はまだ私は重複した名前の列に追加すると、関係なく、それはユニークなキャプションを持っているという事実を、それが第一いずれかのプロパティを取得するということですが、正しいヘッダーを入力してください:

Col4:Customer.Company.Name(Company) 

アイデアをお持ちですか?

答えて

1

問題は、私は重複した名前を持つ列に追加すると、関係なく、実際のそれが第一いずれかのプロパティを取得しますユニークなキャプションを持っているが、それでも正しいヘッダを置くことである。

その行を明確にすることはできますか?私はこれまでこれを行っていましたが、私は仮想パス名を使用しました。つまりNameではなくPropertyDescriptor.NameレポートCustomer_Company_Nameがあり、よりわかりやすいものを報告するには.DisplayNameを使用します。

+0

私はこれを試してみます、私は現在最後の子供の名前を返します(this.child == null?this.name:this.child.name; 私はユニークな最初のプロパティの値をキャッシングして2番目のプロパティの正しいキャプションと再利用していると思うような名前です。 私はあなたに投票しますが、私は傾けるでしょう:( –

+0

:) –

+0

これは、名前オーバーライドの新しい作業行です。 return base.Name +(childProperty == null? "": "_" + childProperty.Name); childProperty ==の場合は、以前にbase.Nameを返していました。 nullまたはchildProperty.Nameなど。 –