gpt4 book ai didi

c# - 我如何执行这些限制(业务限制)?

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

我希望我的网站支持不同的订阅类型,免费、付费等。

到目前为止我做了一个像这样的抽象类

  public abstract class Limits
{

public int PostLimit { get; protected set; }


protected Limits(int postLimit)
{
PostLimit = postLimit;
}

public bool IsLimitReached(int postCount)
{
return postCount > PostLimit
}

}


public class FreeLimit : Limits
{
private const int postLimit = 1;


public FreeLimit()
: base(postLimit)
{
}

}

所以现在我对所有帐户类型都这样做了。现在的问题是我不知道如何实际使用这个类。

例如我有一个服务层调用 PostService 并且在这个类中我有

public void CreatePost(Post post)
{
// do stuff here
}

现在在这种方法中我不知道如何检查它们是否达到了限制。我不知道如何检查,因为我不确定如何确定我是否应该使用 FreeLimit 或 PremiumLimit 或他们拥有什么帐户。

我认为我首先必须弄清楚他们的角色,然后以某种方式使用该信息来创建正确的类。

我想我可以有类似的东西

public void CreatePost(Post post, PlanType planType)
{
Limits limit;
switch(planType)
{
case planType.Free:
limit = new FreeLmit()
break;
}

if(limit.IsLimitReached())
{
// do stuff
}
}

我不喜欢这种方式,因为现在每个需要检查限制的方法都必须这样做。我将有一些方法需要在我的服务层中进行此检查。

所以我想把它放在我的构造函数中,但我不知道在构造函数中有一个 switch 语句是否好。

最佳答案

你可以使用接口(interface) ILimit

interface ILimit
{
int PostLimit { get; protected set; }
bool IsLimitReached(int postCount);
}

现在您可以有几个实现此接口(interface)的其他类(免费、高级、 super )。在您的服务方法 CreatePost 中,您可以只传递实现该接口(interface)的类的任何实例并使用它 - 不再需要区分它们,因为它们都支持相同的接口(interface)。

public void CreatePost(Post post, ILimit limit)
{
if(limit.IsLimitReached())
{
// do stuff
}
}

关于c# - 我如何执行这些限制(业务限制)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4854607/

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