我有一段我觉得可以清理的代码(我可能是错的),但我想看看是否有人能给我一个建议,让它变得更“更好”。
string getExt = Path.GetExtension(DocumentUNCPath.Text);
var convertFileId = Guid.NewGuid();
var convertFilePath = @"c:\temp\" + convertFileId + ".pdf";
if (getExt == ".doc" || getExt == ".docx" || getExt == ".txt" || getExt == ".rtf")
{
WordToPdf(convertFilePath);
}
else if (getExt == ".xlsx" || getExt == ".xls")
{
ExcelToPdf(convertFilePath);
}
else if (getExt == ".jpg" || getExt == ".png" || getExt == ".jpeg" || getExt == ".JPG" || getExt == ".PNG")
{
ImgToPDF(convertFilePath);
}发布于 2013-03-01 03:58:40
以下代码最初可能更多,但可以更好地扩展。
在方法之外:
public static readonly List<string> WorkExtensions = new List<string> { ".doc", ".docx", ".txt", ".trf" };
public static readonly List<string> ExcelExtensions = new List<string> { ".xlsx", ".xls" };
public static readonly List<string> ImageExtensions = new List<string> { ".jpg", ".png", ".jpeg" };方法内部:
string getExt = Path.GetExtension(DocumentUNCPath.Text);
var convertFileId = Guid.NewGuid();
var convertFilePath = @"c:\temp\" + convertFileId + ".pdf";
getExt = getExt.ToLower();
if (WorkExtensions.Contains(getExt))
{
WordToPdf(convertFilePath)
}
else if (ExcelExtensions.Contains(getExt))
{
ExcelToPdf(convertFilePath);
}
else if (ImageExtensions.Contains(getExt))
{
ImgToPdf(convertFilePath);
}发布于 2013-03-01 03:51:21
将扩展映射到处理程序是处理此类情况的标准方法:
// populate with { ".doc", WordToPdf } and similar pairs
Dictionary<string, Action<string> > handlers = ...
// find and call handler by extension
// (use TryGetValue to check for existence if needed)
handlers[getExt]( convertFilePath );发布于 2013-03-01 03:51:25
你可以这样做
switch (getExt.ToUpper())
{
case "JPG":
case "PNG":
....https://stackoverflow.com/questions/15144320
复制相似问题