C# 如何编写自适应方法以正确使用库?
我有一个库,程序中的逻辑有一个问题。如果你能帮助我,我会对你说:“谢谢”。非常感谢。 代码: 问题是:我的班级是一个图书馆。我如何创建一个自适应方法(Receive),用户可以使用它在任何地方输出信息(记录器、控制台、文件e.t.c)。 我应该使用虚拟方法吗?还是创建一个接口?或者我如何将其与事件绑定?如果我们讨论典型情况,我知道如何使用事件。 谢谢你的帮助。C# 如何编写自适应方法以正确使用库?,c#,events,dining-philosopher,C#,Events,Dining Philosopher,我有一个库,程序中的逻辑有一个问题。如果你能帮助我,我会对你说:“谢谢”。非常感谢。 代码: 问题是:我的班级是一个图书馆。我如何创建一个自适应方法(Receive),用户可以使用它在任何地方输出信息(记录器、控制台、文件e.t.c)。 我应该使用虚拟方法吗?还是创建一个接口?或者我如何将其与事件绑定?如果我们讨论典型情况,我知道如何使用事件。 谢谢你的帮助。 再一次为我糟糕的英语道歉。你可以使用不同的方法来实现这一点。 下面的代码显示了如何定义和使用接口: public interface
再一次为我糟糕的英语道歉。你可以使用不同的方法来实现这一点。 下面的代码显示了如何定义和使用接口:
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();
}
}
听起来像是一个依赖注入的工作質問はちょっと分かりにくい。。@凯伦:我们都喜欢这里的英语,不需要对答案说谢谢。如果答案有用并解决了问题,只需将其标记为答案即可。祝你好运。如果这是正确的解决方案,请按绿色勾号,这样每个人都可以从@TetsuaKeito中受益
Thread.Sleep(rng.Next(1000) + 1);
Status = "thinking";
reportObject.ReceiveMessage(Name + " is " + Status);
Thread.Sleep(rng.Next(1000) + 1);
}
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();
}
}