Назначьте значение свойства автоматически из других свойств в пределах объекта - PullRequest
0 голосов
/ 24 мая 2018

У меня есть следующее Class

public class BlogPost
{
    public int BlogPostId             { get; set; }
    public string BlogPostTitle       { get; set; }
    public string BlogPostDescription { get; set; }
    public int Upvotes    { get; set; }
    public int Downvotes  { get; set; }
    public int TotalVotes { get; set; }
}

Как бы вы автоматически присвоили TotalVotes = Upvotes - Downvotes?

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Вам нужно просто написать свою операцию в обратном пути, как:

public int TotalVotes { get { return Upvotes - Downvotes;} }
0 голосов
/ 24 мая 2018

Ответы других будут работать, но я бы предпочел что-то вроде этого (C # 6.0)

public class BlogPost
{
    public int BlogPostId { get; set; }
    public string BlogPostTitle { get; set; }
    public string BlogPostDescription { get; set; }
    public int Upvotes { get; set; }
    public int Downvotes { get; set; }
    public int TotalVotes {get => GetTotalVotes(); }   

    // A method just in case if you need to do some extra calculations or validations
    private int GetTotalVotes()
    {

        //I am assuming the TotalVotes should not go below 0;
        //You can change it as you like

        int value = UpVotes - DownVotes;

        return value<0? 0 : value;

    }
}
0 голосов
/ 24 мая 2018

Похоже, вы ищете расчетное свойство .Так должно быть что-то вроде этого:

public int TotalVotes
{ 
    get { return Upvotes - Downvotes; } 
}

Или, если вы используете C # 6+, вы можете использовать тело выражения , например:

public int TotalVotes => Upvotes - Downvotes;
...