C# 列表<;类型1>;列出<;类型2>;转换WPF

C# 列表<;类型1>;列出<;类型2>;转换WPF,c#,wpf,list,type-conversion,C#,Wpf,List,Type Conversion,我创建了只包含一个依赖属性“Text”返回字符串的简单类型。为了便于从字符串转换为我的类型,我编写了以下代码: public static implicit operator string(StringDP sdp) { return sdp.Text; } public static implicit operator StringDP(string str) { return new StringDP(str); } 我想从List到List进行类似的转换。我能做到吗?或

我创建了只包含一个依赖属性“Text”返回字符串的简单类型。为了便于从字符串转换为我的类型,我编写了以下代码:

public static implicit operator string(StringDP sdp)
{
    return sdp.Text;
}

public static implicit operator StringDP(string str)
{
    return new StringDP(str);
}
我想从
List
List
进行类似的转换。我能做到吗?或者我必须用这样的东西:

public List<string> Convert(List<myType> lst);
public List<myType> Convert(List<string> lst);
公共列表转换(列表lst);
公共列表转换(列表lst);

谢谢大家!

不,这是不可能的。发件人:

要转换的参数的类型或转换结果的类型(但不能两者都是)必须是包含类型

假设的隐式转换中涉及的两种类型都是泛型
列表
类的具体版本。由于您自己无法将运算符添加到
列表
类中,而且要实现您的目标,必须使用
隐式
运算符,因此无法执行此操作

如果没有更多的上下文,我承认我真的无法对您定义的
string
之间的隐式转换进行知识性的评论。但是一般来说,您应该非常小心
隐式
转换。假设您的类型的隐式转换符合“安全”准则,那么转换整个类型列表将是“好的”

可以使用自定义方法(如示例)完成此转换。或者可以使用LINQ或
List.ConvertAll()
方法。例如:

List<string> listOfString = listOfMyType.Select(item => (string)item).ToList();
List<myType> listOfMyType = listOfString.ConvertAll(item => (myType)item);
// etc.
List listOfString=listOfMyType.Select(item=>(string)item.ToList();
List listOfMyType=listOfString.ConvertAll(项=>(myType)项);
//等等。
然而,即使在那里,我也建议你在使用类似的东西时要小心。转换一个值的单个实例是一回事,但是转换整个集合需要相当多的开销,而且很可能不是解决问题的正确方法

不知道实际的问题是什么,我不能提供一个替代方案。只是想建议你对你看来要走的设计道路非常谨慎