gpt4 book ai didi

C#避免为接口(interface)属性重复代码

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:54 25 4
gpt4 key购买 nike

给定界面:

interface IVotable
{
int TotalUpvotes { get; }
int TotalDownvotes { get; }
int TotalVoteScore { get; }
}

通过实现:

public class Comment : IVotable
{
public int TotalUpvotes { get; private set; }
public int TotalDownvotes { get; private set; }
public int TotalVoteScore { get { return TotalUpvotes - TotalDownvotes + 1 ; } }
}

避免在每个类(class)中以相同方式实现 TotalVoteScore 的最佳方法是什么?

最佳答案

如果您不想重新实现的只是 TotalVoteScore,那么这就是要走的路:

public interface IVotable
{
int TotalUpvotes { get; }
int TotalDownvotes { get; }
int TotalVoteScore { get; }
}

public abstract class VotableBase : IVotable
{
public abstract int TotalUpvotes { get; protected set; }
public abstract int TotalDownvotes { get; protected set; }
public virtual int TotalVoteScore { get { return TotalUpvotes - TotalDownvotes + 1 ; } }
}

public class Comment : VotableBase
{
public override int TotalUpvotes { get; protected set; }
public override int TotalDownvotes { get; protected set; }
}

关于C#避免为接口(interface)属性重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38146289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com