我可以为 System.IO.Path 类创建扩展方法吗? [复制]

Posted

技术标签:

【中文标题】我可以为 System.IO.Path 类创建扩展方法吗? [复制]【英文标题】:Can I Make Extension Methods For System.IO.Path Class? [duplicate] 【发布时间】:2013-07-16 13:48:51 【问题描述】:

我如何为 System.IO.Path 类创建扩展方法我的意思是我需要以下内容:

Path.GetExtension(sFilePath) 

我要制作方法:

Path.GetMimeType(sFilePath)

扩展方法:

public static string GetMIMEType(this Path sPath,string sFilePath)

        string sExtension = Path.GetExtension(sFilePath).ToLowerInvariant();

        if (sExtension.Length > 0 && dicMIMETypes.ContainsKey(sExtension.Remove(0, 1)))
        
            return dicMIMETypes[sExtension.Remove(0, 1)];
        
        return "unknown/unknown";

但是当编译上面的代码方法时出现错误('System.IO.Path':静态类型不能用作参数)。

谢谢大家,

【问题讨论】:

不可能——但这个答案的锻炼可能适合您的需求。 ***.com/questions/249222/… 你可以说你做错了,你从来没有在你的代码中真正使用过 sPath 参数。也没有办法让你弄清楚如何使用它。所以扩展方法没有意义,它没有扩展任何东西。 【参考方案1】:

Path 是静态的,因此您不能为其创建扩展方法。扩展方法需要一个对象的实例。

【讨论】:

【参考方案2】:

此功能目前不可用。您只能将扩展方法添加到实例而不是类本身(静态)。

功能请求已提交给 Microsoft Static extension methods in C# 4.0 它没有实施,他们将来可能会考虑,也可能不会。

【讨论】:

请注意,“不会修复”并不一定意味着“永远不会修复”。这只是意味着微软已经决定时机不对,现在。在此之前,我已经看到“不会修复”的案例最终被修复/更改,所以这不是“从不”。我不一定同意这种关闭案例的方式,但它可能会减少他们的噪音量,我仍然有一些其他产品的未结案例,他们每周都会收到奇怪的“我也想要这个”或所以,弄乱了我的邮箱。 In 只能想象使用这样的系统开发者邮箱会是什么样子。 谢谢@LasseV.Karlsen,我不知道。将编辑我的答案 仅供参考,该链接不再链接到任何有意义的内容。

以上是关于我可以为 System.IO.Path 类创建扩展方法吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用System.IO.Combine(string path1, string path2, string path3)四个参数的重载函数提示`System.IO.Path.Combine(stri

System.IO.Path 不包含 GetFiles 的定义

UiPath--文件操作详解

返回文件路径中的想要的值

部署 Azure 函数时无法从程序集“System.Runtime”加载类型“System.IO.Path”

是否可以为协议创建仅类扩展?