将字符串转换为自定义<字符串>

Posted

技术标签:

【中文标题】将字符串转换为自定义<字符串>【英文标题】:Cast - string to Custom<string> 【发布时间】:2011-08-17 12:43:29 【问题描述】:

我的属性有一个自定义包装对象:MyType&lt;t&gt;。 我有这些类型的私有成员和 t 类型的公共成员。

我正在尝试加载对象,但遇到了转换错误:

无法将“System.String”类型的对象转换为类型 'Model.MyType`1[System.String]

我有以下方法:

private t _value;

public static implicit  operator t(MyType<t> obj)

    return obj._value;

任何帮助我完成演员阵容的工作都会很棒。

更新:

该成员如下所示:

 MyType<string> PostalCode =  new MyType<string>();

我正在使用 Dapper 加载属性,并且没有命中建议的方法。因此,当反射引擎尝试加载对象时,不会触发隐式转换。

【问题讨论】:

【参考方案1】:

您的操作员倒退了。它支持从MyType&lt;t&gt; 转换为t。你想反过来。也许您正在寻找类似的东西。

 private t _value;

 private MyType(t val)
 
      _value = val;
 

 public static implicit operator MyType<t>(t obj)
 
     return new MyType<t>(obj);
 

使用构造函数是可选的,我个人只是觉得更干净。您可以只使用默认构造函数并在您的运算符中显式设置字段。

【讨论】:

这是有道理的。但是,这些方法没有被击中。 @Arnej65 Dapper 可能会尝试进行显式转换,您也可以覆盖它,将 implicit 更改为 explicit 我把它和这个混在一起:***.com/questions/5898988/…【参考方案2】:

您的隐式转换运算符与错误所抱怨的方向相反,您需要实现另一个隐式运算符以从 t 转到 MyType&lt;t&gt;

您也可以通过显式强制转换来执行相同的操作(您可以执行string foo = (string)someObject; 之类的操作):

http://msdn.microsoft.com/en-us/library/xhbhezf4(v=vs.71).aspx

【讨论】:

以上是关于将字符串转换为自定义<字符串>的主要内容,如果未能解决你的问题,请参考以下文章

如何将时间字符串转换为自定义日期格式?

Angular-6:将字符串转换为自定义对象的数组

当 minifyEnabled 为 true 时,如何将 JSON 字符串转换为自定义对象?

我想将字符串值从 API 转换为自定义可编码模型 SWIFT

如何将字符串呈现为自定义 React 组件?

金额转换为自定义字符串