2

私はこのクラスを持っています:

public class ContentViewModel
{
    public Content Content { get; set; }
    public bool UseRowKey { 
        get {
            return Content.PartitionKey.Substring(2, 2) == "05" ||
               Content.PartitionKey.Substring(2, 2) == "06";
        }
    }
    public string TempRowKey { get; set; }

}

私は今これをやっています:

        var vm = new ContentViewModel();
        vm.Content = new Content(pk);
        vm.Content.PartitionKey = pk;
        vm.Content.Created = DateTime.Now;

最後の3つのステートメントを実行する必要がないようにContentViewModelを変更する方法はありますか?

4

3 に答える 3

2

コンストラクターにパラメーターを渡してみませんか?

public class ContentViewModel
{
    public ContentViewModel(SomeType pk)
    {
        Content = new Content(pk); //use pk in the Content constructor to set other params
    }  
    public Content Content { get; set; }
    public bool UseRowKey { 
        get {
            return Content.PartitionKey.Substring(2, 2) == "05" ||
               Content.PartitionKey.Substring(2, 2) == "06";
        }
    }
    public string TempRowKey { get; set; }
}

一般に、OOPとデメテルの法則を検討してください。オブジェクトにをすべきかを指示する必要がない場合は、ネストされたプロパティにアクセスしないでくださいオブジェクト自体に決定させてください)。

于 2012-07-08T05:19:12.067 に答える
1

ええ、このように:

public class ContentViewModel 
{ 
    public ContentViewModel(Content c) 
    {
        if (c == null) throw new ArgumentNullException("Cannot create Content VM with null content.");
        this.Content = c;
    }
    public ContentViewModel(object pk) : this(Guid.NewGuid()) {}
    public ContentViewModel(object pk)
    {
        this.Content = new Content(pk); 
        this.Content.PartitionKey = pk; 
        this.Content.Created = DateTime.Now; 
    }

    public Content Content { get; set; } 
    public bool UseRowKey {  
        get { 
            return Content.PartitionKey.Substring(2, 2) == "05" || 
               Content.PartitionKey.Substring(2, 2) == "06"; 
        } 
    } 
    public string TempRowKey { get; set; } 

} 
于 2012-07-08T05:18:44.227 に答える
1

役に立つかもしれませobject initializerん:

var vm = new ContentViewModel {Content = new Content {PartitionKey = pk, Created = DateTime.Now}};

すべて一行で。

于 2012-07-08T05:22:56.853 に答える