2011-01-28 8 views
3

公式のC#ドライバを使用してMongo Webアプリケーションを作成しています。C#:getterとsetterの作成を自動化する方法はありますか?

参照を実装するには、参照を手動でフェッチする必要があります。

db.FetchDBRefAs<Topic>(user.Topic); 

、新しいものを作成するには:

ので、我々は次のことを行う必要があるトピックをフェッチするために、我々は

class User { 
    ... 
    public MongoDBRef Topic { get; set; } 
} 

を持っているとしましょう

user.Topic = new MongoDBRef(TopicsTable, topic._id); 

私が決めました仮想プロパティを作成してより便利にする:

[BsonIgnore] 
    public Topic _Topic 
    { 
     get 
     { 
      return db.FetchDBRefAs<Topic>(Topic); 
     } 
     set 
     { 
      CreatedAd = new MongoDBRef(TopicsTable, value._id); 
     } 
    } 

今、私はこのようにそれを使用することができます:

user._Topic = someTopic; 
anotherTopic = user._Topic; 

は明らかにそれが参照されるすべてのオブジェクトに対してこれを行うには大きな痛みです。

このプロセスを自動化する方法はありますか?

おかげ

+3

正しい用語を使用していません。それは「仮想的な財産」ではありません。 「仮想プロパティ」は実際には 'public virtual Topic _Topic {...}'という 'virtual'キーワードを持ち、派生クラスでオーバーライドできることを意味します。これは単に「明示的に実装されたプロパティ」または「自動プロパティ」とは対照的に「手動プロパティ」です。 –

答えて

5

あなたはVisual Studio code snippetsを使用することができ、私は疑います。私は自分自身を決してしたことはありませんが、これはまさにこれが彼らが通常使っているものだと思います。

3

Visual Studio code snippetsを使用できます。

propと2つのタブを入力して、プロパティのタイプと名前を入力するだけです。

はバッキングフィールド(propfull)、読み取り専用プロパティ(propg)と、より多くの事を完全にプロパティのスニペットではあり組み込まれている - たとえば空のコンストラクタ(ctor)。

独自のコードスニペットを作成して使用することもできます。

関連する問題