1
|
burnt1ce · 技术社区 · 16 年前 |
![]() |
1
3
不能。如果您对此有问题,那么在运行时的早期,您可以使用反射来获取所有类型的列表,从这些筛选到实现这些类型的列表。
编辑:
更好的检查是确保类型是可序列化的。C编译器使用
尽量避免上述检查,尤其是在生产代码中。如果您是第三方组件提供商,那么 清晰地记录 要求和 信任 您的客户应该遵循它(并且如果他们以后遇到问题,请相信他们能够在内部理解/使用类似的方法)。 |
![]() |
2
4
不幸的是,你不能这么做。接口签名只能在实现程序上强制执行本质上与类型相关的信息。您要做的是在实现程序上强制附加属性信息。这在元数据中不可表示,无法实现。
可以强制实施者返回
我仍然在加快代码契约的速度,但似乎它们可以用契约类来执行。不过,它最终可能只是一个运行时强制执行。 |
![]() |
3
0
这是不可能的。属性用于标记属性、方法和类,以便在通过反射检查编译的代码时可以发现该属性。编译器对属性的了解程度是,如果遇到一个属性,它将嵌入一个属性。但是属性不属于类型系统,因此也不属于接口定义。 如果您期望一个可序列化的对象,那么您必须用反射来验证这个运行时,而不是编译时。 |
![]() |
4
0
以下代码将被编译,但我不知道它是否符合您的需要:
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 8 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 8 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 8 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 8 月前 |