2013-07-17 65 views
1

我怎样才能使扩展方法对于System.IO.Path类我的意思是我需要的东西象下面这样:我可以为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':静态类型不能用作参数)。

感谢所有,

+1

不可能 - 但这个答案有一个可能适合您的需求的锻炼。 http://stackoverflow.com/questions/249222/can-i-add-extension-methods-to-an-existing-static-class –

+3

你可以告诉你做错了,你从来没有真正使用* sPath *参数在你的代码中。你也没有办法找出如何使用它。所以对扩展方法没有意义,它没有扩展任何东西。 –

回答

1

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

1

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

已向微软提供的功能请求Static extension methods in C# 4.0 该功能尚未实施,他们可能会考虑将来也可能不会。

+0

请注意,“不会修复”并不一定意味着“永远不会修复”。这只是意味着微软现在已经认定时间不对了。我已经看到“不会修复”的情况,因为它最终被修复/更改,所以它不是“从不”。我不一定同意这种结案方式,但它可能会减少他们的噪音,我还有其他产品的开放案例,他们每周都会得到奇怪的“我也想要这个”,或者所以,弄乱我的邮箱。在这个系统中,我们只能想象开发者邮箱的样子。 –

+0

谢谢@ LasseV.Karlsen,我没有意识到这一点。将编辑我的答案 –

相关问题