我正在尝试以编程方式递归地发送目录中所有 dll 文件及其版本的电子邮件。我想使用表格将电子邮件作为 HTML 输出发送。有没有好的面向对象的方法来做到这一点?我不想手写所有标签。
类似于:
private string getHTMLString()
{
DirectoryInfo di = new DirectoryInfo("some directory");
FileInfo[] files = di.GetFiles("*.dll", SearchOption.AllDirectories);
foreach (FileInfo file in files)
{
Assembly assembly = Assembly.LoadFile(file.FullName);
string version = assembly.GetName().Version.ToString();
}
}
最佳答案
您可以通过实例化 System.Web.UI.WebControls.Table、添加 TableRows 和 TableCells 然后将 Table.RenderControl 调用到 HtmlTextWriter 中来实现 OO,但公平地说:那会很糟糕 :)
var tbl = new System.Web.UI.WebControls.Table();
DirectoryInfo di = new DirectoryInfo("some directory");
FileInfo[] files = di.GetFiles("*.dll", SearchOption.AllDirectories);
foreach (FileInfo file in files)
{
Assembly assembly = Assembly.LoadFile(file.FullName);
string version = assembly.GetName().Version.ToString();
var tr = new System.Web.UI.WebControls.TableRow();
var tc = new System.Web.UI.WebControls.TableCell();
tc.Text = HttpUtility.HtmlEncode(version);
tr.Cells.Add(tc);
tbl.Rows.Add(tr);
}
using (var ts = new StringWriter())
using (var html = new System.Web.UI.HtmlTextWriter(ts))
{
// Not entirely sure about this part
tbl.RenderControl(html);
html.Flush();
string htmlString = ts.ToString();
}
关于C# - 将 HTML 编写为字符串的面向对象方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003176/