是否可以使用基于属性而不是类型的通用约束? [复制]

2024-01-10

我正在尝试编写一个负责持久应用程序选项的类。由于需要保留选项,因此我发送的值必须是可序列化的。

最初我以为我能够编写一个具有如下签名的方法:

Public Sub SaveOption(Of T As ISerializable)(ByVal id As String, ByVal value As T)

或者如果您更喜欢 C#:

public void SaveOption<T>(string id, T value) where T : ISerializable  

原则上这没问题,但是对于具有以下类型的类型呢?<Serializable>属性?最值得注意的例子是 System.String,它没有实现ISerializable,但显然这是我应该能够保存的类型。

那么,有没有一种方法可以根据类型的属性来限制在编译时方法中允许哪些类型?


您可以重载其他类型 - 以字符串为例:

public void SaveOption(string id, string value)

然而;可串行化是......棘手的;我希望您必须在运行时检查这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用基于属性而不是类型的通用约束? [复制] 的相关文章

随机推荐