[英]How to get mime name from array struct
我有MimeVideo
结构,并在列表中使用它来存储mime视频文件。 我想要做的是通过Ext
获取mimefile
name的值,以将其存储在MediaTypeHeaderValue
。 怎么做?
struct MimeVideo
{
private readonly string _ext;
private readonly string _file;
public MimeVideo(string ext, string file)
{
this._ext = ext;
this._file = file;
}
public string Ext { get { return _ext; } }
public string File { get { return _file; } }
}
static readonly IList<MimeVideo> MimeNames = new ReadOnlyCollection<MimeVideo>
(new[] {
new MimeVideo (".mp4", "video/mp4"),
new MimeVideo (".ogg", "application/ogg"),
new MimeVideo (".ogv", "video/ogg"),
new MimeVideo (".webm", "video/webm")
});
private static MediaTypeHeaderValue GetMimeNameFromExt(string ext)
{
string name ;
get the name of file using ext
if (MimeNames // get filename by using ext)
return new MediaTypeHeaderValue(name );
else
return new MediaTypeHeaderValue(MediaTypeNames.Application.Octet);
}
您可以使用Enumerable.FirstOrDefault
:
private static MediaTypeHeaderValue GetMimeNameFromExt(string ext)
{
MimeVideo first = MimeNames
.FirstOrDefault(m => m.Ext.Equals(ext, StringComparison.InvariantCultureIgnoreCase));
if(first == null)
return new MediaTypeHeaderValue(MediaTypeNames.Application.Octet);
else
return new MediaTypeHeaderValue(first.File);
}
或Where
+ DefaultIfEmpty
:
private static MediaTypeHeaderValue GetMimeNameFromExt(string ext)
{
return MimeNames
.Where(m => m.Ext.Equals(ext, StringComparison.InvariantCultureIgnoreCase))
.Select(m => new MediaTypeHeaderValue(m.File))
.DefaultIfEmpty(new MediaTypeHeaderValue(MediaTypeNames.Application.Octet))
.First();
}
您尚未显示如何获取扩展名,我建议使用usig System.IO.Path.GetExtension
。 我还将使用Dictionary<string, MimeVideo>
代替。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.