【发布时间】:2017-01-24 22:36:15
【问题描述】:
我正在制作一个使用 SharpPcap 分析网络流量的 C# DLL。我想要实现的功能之一是可切换控制台输出。这个想法是在我的课堂上有一个方法
public void ConsoleOutputOn(bool outputOn)
如果需要控制台输出,则接收 true,否则接收 false。我不知道我将如何实现它。
我可以在 LUA 中编写
local dprint2 = function() end
function consoleOutput(outputOn)
if (outputON == true) then
dprint2 = function(...)
print(...)
end
else
dprint2 = function() end
end
end
如果调用了 consoleOutput(true),则 dprint2 将变为 print,并且每次调用 dprint2 时,输入参数将被传递给 print 并在控制台输出上打印。如果调用了 consoleOutput(false),那么 dprint2 将是一个什么都不做的空函数。
我尝试在 C# 中做同样的事情,我的类将有私有变量“consoleOn”,而不是 print 我会调用
public void ConsoleOuptput(...) {
if(outputOn) {
Console.WriteLine(...);
}
}
这将检查“consoleOn”是否为真,如果是,则将参数发送到 Console.WriteLine()。
问题是 Console.WriteLine() 对所有类型的输入参数都重载了 19 次。有没有办法编写“如果 sonsoleOn 将所有参数传递给 Console.WriteLine()”。或者有没有更好的方法来制作可切换的控制台输出。
请记住,我正在制作 DLL。我不能完全关闭控制台。
【问题讨论】:
-
如果您只需要控制从您自己的代码生成的输出,那么像
ConsoleOutput这样的包装方法为什么不够好?
标签: c# console console-application