可能重复:
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;
}
}
}
但我不能让它工作,它只适用于实例变量,任何想法如何将它作为静态方法添加到扩展类?
答案 0 :(得分:4)
你不能。
创建它们看起来像实例方法,不能作为类(静态)方法工作。
来自MSDN:
扩展方法是一种特殊的静态方法,但它们被称为扩展类型的实例方法。
和
扩展方法被定义为静态方法,但是使用实例方法语法调用。
答案 1 :(得分:0)