使用C#的消息格式

本文关键字:格式 消息 使用 | 更新日期: 2023-09-27 18:22:45

我试图将一个示例win表单应用程序转换为控制台应用程序。我只是在尝试转换为消息格式时卡住了。

以下是来自winform 的原始代码

private void PutMessage(StringBuilder message, string mediaType, string filename)
{
    message.AppendFormat(messageFormat, "FileSize", videoInterrogator.GetFileSize(), Environment.NewLine);
    message.AppendFormat(messageFormat, "Duration", videoInterrogator.GetDuration(), Environment.NewLine);
}

我正试图在我的控制台应用程序中做同样的事情

我从FTPDownload方法调用该方法,因此代码看起来像

PutMessage(file, message);

private void PutMessage(string filename, StringBuilder message)
{
    VideoInterrogator videoInterrogator = new VideoInterrogator();
    videoInterrogator.LoadFile(filename);
    message.AppendFormat(format, "FileSize", videoInterrogator.GetFileSize(), Environment.NewLine);
    message.AppendFormat(format, "Duration", videoInterrogator.GetDuration(), Environment.NewLine);
}

任何帮助,请告诉我如何调用这个方法,传递文件名并返回值。它抛出了"格式"的异常,我不确定这里缺少了什么。

使用C#的消息格式

您缺少一个变量format。它一定是WinForms代码中的一个字段。将其作为局部变量添加到方法中,或者将字段添加到包含PutMessage的类中。

编辑:我想我只是不确定实际的问题是什么。是缺少变量还是格式字符串的大括号参数多于或少于3个?

只需像调用任何方法一样调用它:

var message = new StringBuilder();
var filename = "file.xyz";
PutMessage(filename, message);
Console.WriteLine(message);

根据您正在使用的AppendFormat方法的签名判断,您缺少用于格式化的字符串。根据上面的MSDN链接:

此方法使用.NET的复合格式功能将对象的值转换为其文本表示形式的框架并将该表示嵌入到当前StringBuilder对象中。

format参数由零次或多次文本混合运行组成具有零个或多个索引占位符(称为格式项)对应于arg0到arg3,的参数列表中的对象这种方法。格式化过程使用对应对象的字符串表示。的语法格式项目如下:

{index[,length][:formatString]}

方括号中的元素是可选的。