2011-01-10 18 views
1

私はWPF/C#アプリケーション用のカスタム検証フレームワークを開発中です。コンパイル時の型の割り当て

私が探しているのは、viewmodelが宣言されているリソースファイルから文字列を取得することですが、実際の検証コードではそれが自己です。この特定の文字列は、編集UIフォームのラベルで使用されるのと同じリソースです。

私のコードは、次の構文で正常に動作します -

[Required(TypeRes = typeof(Resources))] 
    public string RequiredStringWithDesc { get; set; } 

しかし、何を探しているI "mはsyntacticlyクリーナー探しているものです私は

const Type LocalRes = typeof(Resources); 
    [Required(TypeRes = LocalRes)] 
    public string RequiredStringWithDesc { get; set; } 
を使用しようとしていました。

より単純な構文についての示唆はありますか?古いC++ DEFINE文はここにありますうまくいくでしょう。

FYI:この多くの作業に進む理由は、ローカリゼーションとUI構築の仕方に関係しています。我々はこれをやっている理由についての質問のカップルに答えるために


EDIT?私たちは、リソースファイルからに同じ文字列を使用してしようとしている - 編集画面で

  1. 、これはフィールドを識別するためのラベルです。
  2. データモデルでは、検証エラーが発生した場合、これを使用してログファイルの問題に正しくラベルを付けます。
  3. Viewmodelでは、このラベルを検証エラーメッセージに再使用して、問題がユーザーにとってどこにあるかを補強しています。
  4. これはリアルタイム検査システムの一部であり、障害モードのいくつかはこれらのデータフィールドに直接関連しています。だから我々は簡単に一般的な概念が、これは一度だけのものを作成しながら、ユーザーに一貫したメッセージを提示簡素化することで、時間を実行するために適用する障害メッセージ

を正しくローカライズされたラベルを取得することができます。検証属性(とこの質問)に関しては、正しいメッセージをロードするためにリソースファイルタイプを取得できる必要があります。

+1

私はなぜこれをやりなおす必要があるのか​​、混乱しています。なぜなら、組み込みローカリゼーションシステムでは不十分な理由を理解できないからです。あなたは何をしたいのか少し説明しますか? –

+0

私はあなたが少し先に物事を取ったと思う... – NotMe

+0

なぜあなたはコンパイル時に型を知る必要がありますか...それは実行時に十分ではありませんか? –

答えて

0

RequiredAttributeから継承し、デフォルト値を設定する新しい属性クラスを作成します。

public class LocalizedRequiredAttribute : RequiredAttribute { 
    public LocalizedRequiredAttribute() { /* TypeDef = typeof(Resources);*/ } 
} 

public class MyModel { 
    [LocalizedRequired] 
    public string RequiredStringWithDesc { get; set; } 
} 
+0

非常に簡単なアイデアです。朝に試してみる。 –

関連する問題