1

バディクラスはデータ注釈に対してのみ機能しますか、それとも任意の属性に対して機能しますか?バディクラスのフィールドにColumnAttributeをアタッチしようとしましたが、元のクラスでは処理されないようです。2つのクラスはMetadataTypeを介してリンクされています。

4

2 に答える 2

0

バディ クラスの手法は、DataAnnotations にとって特別なものではありません。ただし、使用しているリフレクション コードが属性で何かを行う場合にのみ機能しMetadataTypeます。したがって、ASP.NET MVC はバディ クラスの概念を処理するコードベースの例ですが、Linq-to-sql は処理しません。そのため、現時点では、バディ クラスを使用してColumnAttribute. しかし、どうしても工夫が必要な場合は、Linq-to-SQL は属性を使用する代わりに、マッピングを使用して XML ドキュメントを取得します。これを使用して、バディ クラスを使用した可能性のあるインスタンスの代替としてマッピングを構築できます。

非常に凝ったものにする必要がある場合は、先に進んでバディ クラスを作成し、Linq 属性で装飾されたクラスに対して独自のバディ クラス対応リフレクション ハンドラを記述し、DataContext のニーズに合わせて XML マッピング ドキュメントを構築します。おそらく、50 行未満のコードでそれを行うことができます。

于 2010-10-15T01:57:10.030 に答える
0

私の答えは DataAnnotations 固有のものではありません。これは、型記述子を関連付ける方法のグローバルな答えです。

クラスの関係を記述する のサブクラスを作成しますTypeDescriptionProvider( などの既存の記述子を使用できる場合は、この部分をスキップできますAssociatedMetadataTypeTypeDescriptionProvider)。

次に、TypeDescriptor.AddProviderまたはTypeDescriptor.AddProviderTransparentを使用して、実行時に動的にアタッチします。

私の提案は、フラグ付きの型のリストを持つサービスを用意し、それを介してすべての型を実行し (オンデマンドであるため、パフォーマンス コストはアプリケーションの実行時に分散されます)、型が処理されると、その型をリストにあり、次にこのタイプが要求されたときに、それがリストにあることがわかります。

于 2010-08-13T04:15:46.957 に答える