使用C#的消息格式

时间:2012-02-06 04:36:11

标签: c#

我试图将示例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);

}

任何帮助请我如何调用此方法传递文件名并返回值。它会在“格式”处抛出异常,我不知道这里缺少什么。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

  

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

     

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

     

{index [,length] [:formatString]}

     

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