gpt4 book ai didi

c# - 显示消息对话框的方法

转载 作者:行者123 更新时间:2023-11-28 21:30:57 30 4
gpt4 key购买 nike

我有一组程序会出于各种原因反复向用户显示消息。我最初的想法是一个基本的静态辅助方法:

public class Message
{
public static void ShowMessage(...)
{
...

该方法本身做各种事情(即它不仅仅是 MessageBox.Show() 的包装器)。

显然,这会给测试带来问题。因此,我想到的下一个解决方案是使用单例模式。

我确信最简洁的方法是依赖注入(inject),但这带来了每次我想显示一条消息时都必须实例化一个新的无状态对象的问题。

所以我的目标是创建一个允许对公共(public)类进行单次调用的结构。

Message.ShowMessage("hello");

有没有办法在保持可测试性的同时简单地实现这一目标?

最佳答案

我的方法是使用策略模式(根据项目的规模,这可能有点矫枉过正)。

interface IMessageShowingStrategy 
{
void ShowMessage(...)
}

class RealMessageShowingStrategy : IMessageShowingStrategy
{
void ShowMessage(...)
{
// Real code
}
}

class TestingMessageShowingStrategy : IMessageShowingStrategy
{
void ShowMessage(...)
{
// Code used for testing
}
}

class Message
{
IMessageShowingStrategy messageStrategy;

void ShowMessage(...)
{
this.messageStrategy.ShowMessage(...);
}

}

然后您可以选择使用哪种策略。对于测试,您可以使用 TestingMessageShowingStrategy 的实例(也许当应用程序以 -debug 开关或其他东西启动时),否则使用 Real 策略。这就是我一直在使用的单元测试。

关于c# - 显示消息对话框的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22709932/

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