【发布时间】:2021-04-29 20:00:14
【问题描述】:
我是 C# 新手,这并没有多大意义。 我正在将一个非常简单的名为 User 的类转换为另一个相当简单的名为 InputCapsule 的类。 我遇到的问题是返回输入胶囊时,VS 会说以下内容。
用户定义的转换必须与封闭类型相互转换。
我很困惑,因为我返回了正确的类型。 我的参考代码:
(名称、电子邮件和密码是属性,如果这会改变事情的话。)
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello
{
public class InputCapsule<T>
{
public static explicit operator InputCapsule<string>(User v)
{
InputCapsule<string> @out = new InputCapsule<string>();
@out.inputs.Add(v.Name);
@out.inputs.Add(v.Email);
@out.inputs.Add(v.Pass);
return @out;
}
public List<T> inputs;
}
}
【问题讨论】:
-
您的方法正在转换为
InputCapsule<string>而不是InputCapsule<T>。封闭类型是public class InputCapsule<T>。 -
“我返回了正确的类型”——不,你不是。错误消息准确地解释了您的代码有什么问题。