我试图将示例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);
}
任何帮助请我如何调用此方法传递文件名并返回值。它会在“格式”处抛出异常,我不知道这里缺少什么。
答案 0 :(得分:2)
您错过了变量format
。它必须是WinForms代码中的一个字段。将其作为局部变量添加到方法中,或者将其添加到包含PutMessage
的类的字段中。
答案 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]}
方括号中的元素是可选的。