是否有可能有一个类似字符串的类,但允许我有一些额外的属性?
具体来说,我希望能够做类似
的事情Dim A As MyClass ''Or New MyClass("InitialValue")
A = "Something"
If A = "SomethingElse" Then
End If
从我所看到的,我需要实现一个类型,可以通过它在构造函数中传递字符串的方式进行分配:
例如A = Something
应解释为A = New MyClass("Something")
。另外,我需要覆盖比较运算符,以便我的代码可以处理If A = "SomethingElse" Then
来检查基础字符串值
由于String
是密封的/不可继承的,而且String似乎在.Net中有一些特殊的处理方式,我对如何解决这个问题感到有点困惑。
为了解释为什么需要它,我有一个实体类(Not EF)被序列化以生成针对搜索索引的查询。通过为我的实体指定lambda来创建查询。
我现在需要修改实体上的某些属性,以便它们不是序列化为一个简单的字符串(用于传递给搜索索引),而是复杂的对象。我无法控制序列化本身(目前正在Newtonsoft Json.Net中处理)所以我希望这将是一个(更快)的替代方案,它允许我使用现有的lambdas等...
答案 0 :(得分:3)
可以使用System.String
中的custom implicit conversion为XNamespace
执行此操作,例如<{1}},例如 1 。是否也用于比较,我不确定。
我通常非常紧张隐式转换,并且会对此提出警告。使用构造函数或静态工厂方法,或者可能是从string
转换为相关类型的扩展方法,可以更清楚地说明这一点:
Dim A = new MyClass("Something")
If A = "SomethingElse".ToMyClass()
1 LINQ to XML包含一系列破坏规则的设计决策,使其更易于使用。这是天才能够胜过正常良好做法的一个例子 - 但我们大多数人都没有这种天才水平。