扩展方法作为静态类方法

时间:2010-12-23 12:39:16

标签: c# extension-methods

  

可能重复:
  Can you add extension methods that you call like static methods?

我想在NewSequentialGuid系统类型上添加Guid函数,所以我可以使用以下内容:

Id = Guid.NewSequentialGuid()

namespace MyExtensions
{
    public static class GuidExtensions
    {
        [DllImport("rpcrt4.dll", SetLastError = true)]
        static extern int UuidCreateSequential(out Guid guid);

        public static Guid NewSequentialGuid(this Guid guid)
        {
            const int RPC_S_OK = 0;
            Guid g;
            int hr = UuidCreateSequential(out g);
            if (hr != RPC_S_OK)
                throw new ApplicationException
                  ("UuidCreateSequential failed: " + hr);
            return g;
        }
    }
}

但我不能让它工作,它只适用于实例变量,任何想法如何将它作为静态方法添加到扩展类?

2 个答案:

答案 0 :(得分:4)

你不能。

创建它们看起来像实例方法,不能作为类(静态)方法工作。

来自MSDN

  

扩展方法是一种特殊的静态方法,但它们被称为扩展类型的实例方法。

  

扩展方法被定义为静态方法,但是使用实例方法语法调用。

答案 1 :(得分:0)