列出<type1>到List <type2>转换WPF </type2> </type1>

时间:2015-03-24 23:39:44

标签: 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<string>List<myType>进行类似的转换。我能做到吗?或者我必须使用这样的东西:

public List<string> Convert(List<myType> lst);
public List<myType> Convert(List<string> lst);

谢谢!

1 个答案:

答案 0 :(得分:1)

不,这是不可能的。来自the documentation

  

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

假设的隐式转换中涉及的两种类型都是泛型List<T>类的具体版本。由于您无法自行为List<T>课程添加运算符,并且由于implicit运算符要实现您的目标所必需的,因此无法实现完成。

如果没有更多背景信息,我承认我无法对您所定义的string的隐式转换进行专业评论。但总的来说,您应该对implicit次转化非常谨慎。假设您的类型的隐式转换符合&#34; safe&#34;准则,那么整个类型列表的转换将是&#34;罚款&#34;。

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

List<string> listOfString = listOfMyType.Select(item => (string)item).ToList();
List<myType> listOfMyType = listOfString.ConvertAll(item => (myType)item);
// etc.

然而,即使在那里,我也建议你应该小心你如何使用这样的东西。转换单个值实例是一回事,但转换整个集合需要相当多的开销,而且很可能不是解决问题的正确方法。

不知道实际问题是什么 ,我无法提供替代方案。只是建议你非常警惕你似乎要走的设计路径。