我需要逐步增加GUID,这是我成功实现的 this
但是现在,我想通过Increment运算符++来实现它,因为我希望我的代码看起来像漂亮和简洁。
我的代码:
public class GuidOps
{
public static Guid operator ++(Guid input)
{
return input.Increment(); //Increment works as intended here
}
}
这不起作用,因为++运算符所需的类型必须是声明运算符的类的类型。
显然我不能覆盖GUID本身的声明
您认为可以在GUID上定义++吗?
答案 0 :(得分:1)
因为Guid
是密封的,所以甚至远程接近这一点的唯一方法是创建一个包装器,然后更新包装器上的Guid属性。但是,它附带了一些免责声明......
也就是说,以下内容将使您接近至少覆盖运营商,并指出试图使代码过于聪明所引起的问题:
public class GuidWrapper
{
public Guid GuidInstance { get; set; } = Guid.NewGuid();
public static GuidWrapper operator ++(GuidWrapper input)
{
input.GuidInstance = input.GuidInstance.Increment();
return input;
}
}
var wrapper = new GuidWrapper();
var guid = wrapper.GuidInstance;
var guid2 = wrapper++.GuidInstance;
答案 1 :(得分:1)
这是不可能的,因为GUID是一个密封的结构