C#中具有设计时检查的新类型

4

根据这个帖子:

如何定义“自定义”基于整数的类型?

上面的回答很好,但我如何在设计时/编译时获取错误而不仅仅是在运行时。

如果我说

byte b = 300; //This will not compile.

那么我如何获得相同的行为?

PackedValue p = 5000;

或者说,在这种情况下,由于显式地...

PackedValue p = (PackedValue)5000;

你的类型计划的最大值和最小值是多少? - Sriram Sakthivel
@Crono 除非你提供一个 implicit 操作符,否则就没问题了。 - Sriram Sakthivel
检查隐式操作符,http://msdn.microsoft.com/zh-cn/library/z5z9kes2.aspx - Maarten
@Maarten,隐式和显式都无法解决我的设计时问题。 - Pieter
@Sriram。根据我所参考的例子,12位二进制数可以表示0-4095之间的数字。 - Pieter
1个回答

5
这很困难,但你可能需要了解Visual Studio的扩展程序代码合同,它允许您为代码指定自定义编译时检查

使用此功能,您可以在操作符声明中(包括隐式和显式)包含行,例如:

Contract.Requires(val < (1<<12));

这将在违反规则时生成编译时错误,例如在您上面的示例中。

谢谢。我会看一下这个,但由于其他人也将使用我的类/代码,我不希望他们依赖于环境的扩展。 - Pieter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接