我如何编写自适应方法以正确的方式使用我的库?
How can i write an adaptive method to use my library in the right way?
我有一个库,但我的程序中存在一个逻辑问题。如果你能帮助我 - 我会说你:"Thank you"。非常感谢。
代码:
public class Report
{
/// <summary>
/// An empty constructor, just instantiates the object.
/// </summary>
public Report()
{
}
/// <summary>
/// A method that receives a message from another object,
/// and prints it out to the Console.
/// </summary>
/// <param name="message">The message to be printed.</param>
public void ReceiveMessage(String message)
{
Console.WriteLine(message);
}
}
private Report reportObject;
public void EnterThinkingState()
{
Thread.Sleep(rng.Next(1000) + 1);
Status = "thinking";
reportObject.ReceiveMessage(Name + " is " + Status);
Thread.Sleep(rng.Next(1000) + 1);
}
问题是:我的 类 - 是一个图书馆。我如何创建一个自适应方法(接收),用户可以使用它在任何他想要的地方输出信息(记录器、控制台、文件 e.t.c)。
我应该使用虚拟方法吗?或者创建一个接口?或者我如何将它与事件绑定?如果我们谈论典型情况,我知道如何使用事件。
感谢您的帮助。
再次抱歉我的英语不好。
您可以使用不同的方法来实现此目的。
下面的代码展示了如何定义一个接口并使用它:
public interface IReceiverBase
{
void ReceiveMessage(string message);
}
public class Report
{
private readonly IReceiverBase _iReceiverBase;
public Report(IReceiverBase iReceiverBase)
{
_iReceiverBase = iReceiverBase;
}
public void DoSomething()
{
// Do something here
_iReceiverBase.ReceiveMessage("Something done ...");
}
}
public class ConsoleMessageReceiver : IReceiverBase
{
public void ReceiveMessage(string message)
{
Console.WriteLine(message);
}
}
public class DebugMessageReceiver : IReceiverBase
{
public void ReceiveMessage(string message)
{
Debug.WriteLine(message);
}
}
class Program
{
static void Main(string[] args)
{
var repConsole = new Report(new ConsoleMessageReceiver());
repConsole.DoSomething();
var repDebug = new Report(new DebugMessageReceiver());
repDebug.DoSomething();
Console.Read();
}
}
我有一个库,但我的程序中存在一个逻辑问题。如果你能帮助我 - 我会说你:"Thank you"。非常感谢。 代码:
public class Report
{
/// <summary>
/// An empty constructor, just instantiates the object.
/// </summary>
public Report()
{
}
/// <summary>
/// A method that receives a message from another object,
/// and prints it out to the Console.
/// </summary>
/// <param name="message">The message to be printed.</param>
public void ReceiveMessage(String message)
{
Console.WriteLine(message);
}
}
private Report reportObject;
public void EnterThinkingState() {
Thread.Sleep(rng.Next(1000) + 1);
Status = "thinking";
reportObject.ReceiveMessage(Name + " is " + Status);
Thread.Sleep(rng.Next(1000) + 1);
}
问题是:我的 类 - 是一个图书馆。我如何创建一个自适应方法(接收),用户可以使用它在任何他想要的地方输出信息(记录器、控制台、文件 e.t.c)。 我应该使用虚拟方法吗?或者创建一个接口?或者我如何将它与事件绑定?如果我们谈论典型情况,我知道如何使用事件。 感谢您的帮助。 再次抱歉我的英语不好。
您可以使用不同的方法来实现此目的。 下面的代码展示了如何定义一个接口并使用它:
public interface IReceiverBase
{
void ReceiveMessage(string message);
}
public class Report
{
private readonly IReceiverBase _iReceiverBase;
public Report(IReceiverBase iReceiverBase)
{
_iReceiverBase = iReceiverBase;
}
public void DoSomething()
{
// Do something here
_iReceiverBase.ReceiveMessage("Something done ...");
}
}
public class ConsoleMessageReceiver : IReceiverBase
{
public void ReceiveMessage(string message)
{
Console.WriteLine(message);
}
}
public class DebugMessageReceiver : IReceiverBase
{
public void ReceiveMessage(string message)
{
Debug.WriteLine(message);
}
}
class Program
{
static void Main(string[] args)
{
var repConsole = new Report(new ConsoleMessageReceiver());
repConsole.DoSomething();
var repDebug = new Report(new DebugMessageReceiver());
repDebug.DoSomething();
Console.Read();
}
}