我有一个方法,它将一个字符串作为参数。 当我发送一个JToken时,我得到了投射错误。 当然,我可以使用JToken.ToString(),但如果我有很多JTokens,那么很难处理所有这些。 是否可以创建从JToken到string的隐式类型转换(例如),考虑到我无法访问JToken或字符串类更改?
答案 0 :(得分:0)
总结每个人都在说的话:不,这是不可能的。
当您拥有其中一个类时,您只能进行隐式类型转换:Can I add an implicit conversion for two classes which I don't directly control?
最好的方法(在我看来)解决这个问题的方法是使用一个接受JToken而不是string和tostring()的扩展方法:
public static class MyExtensionMethodWrap
{
public static void AcceptJtoken(this ClassYouWantToExtend self, JToken token)
{
self.AcceptJtoken(token.ToString());
}
}
这样你就不会在ClassYouWantToExtend
上制造一个无用且混乱的方法,但是你有可能直接注入JToken。
您可以将扩展方法/类设为内部,因此此方法仅在您的单个项目中可用。 (通过显示此方法,不会在其他任何地方造成混淆)