如何投射您无法访问的类型?

时间:2017-04-13 05:38:00

标签: c#

我有一个方法,它将一个字符串作为参数。 当我发送一个JToken时,我得到了投射错误。 当然,我可以使用JToken.ToString(),但如果我有很多JTokens,那么很难处理所有这些。 是否可以创建从JToken到string的隐式类型转换(例如),考虑到我无法访问JToken或字符串类更改?

1 个答案:

答案 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。

加成

您可以将扩展方法/类设为内部,因此此方法仅在您的单个项目中可用。 (通过显示此方法,不会在其他任何地方造成混淆)