C# 列表<;类型1>;列出<;类型2>;转换WPF
我创建了只包含一个依赖属性“Text”返回字符串的简单类型。为了便于从字符串转换为我的类型,我编写了以下代码: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进行类似的转换。我能做到吗?或
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)项);
//等等。
然而,即使在那里,我也建议你在使用类似的东西时要小心。转换一个值的单个实例是一回事,但是转换整个集合需要相当多的开销,而且很可能不是解决问题的正确方法
不知道实际的问题是什么,我不能提供一个替代方案。只是想建议你对你看来要走的设计道路非常谨慎