【发布时间】:2014-05-14 07:37:23
【问题描述】:
我是 c# silvelight5 初学者,我必须创建自己的 Converter() 函数,该函数必须类似于从 IValueConverter 接口派生的 Converter() 函数。
我现在有什么数据? 我已经正确反序列化了 xml,在反序列化时我得到了这个:
XmlSerializer deserializer = new XmlSerializer(typeof(Parameter));//this Parameter is class obtained from(Root node of xml) and "parameter" is object.
XmlReader reader = XmlReader.Create(new StringReader(xmlstring));
Parameter parameter = (Parameter)deserializer.Deserialize(reader);
foreach (var item in parameter.Component.Attributes.Items)
{
Debug.WriteLine(item);//It works correctly i have debugged
}
如您所见,我有对象 parameter,它现在包含 xml 元素和根(我的意思是所有数据)。
现在使用这个对象,我尝试创建像这样的 Converter 等效项(他的代码也在同一个类中):
ICollection<Parameter> list = parameter as ICollection<Parameter>;// **Problem creating line**
List<UIElement> result = new List<UIElement>();
您可以看到这个"parameter" 是从反序列化中获得的,并且我在调试时确定它已正确反序列化。
所以在这里我将转换器()的"value"替换为"parameter"。
问题是当我调试并看到参数包含所有反序列化的 xml 但我不知道为什么“列表”总是显示 null ?即使我可以看到所有 xml 元素(我的意思是节点值)调试但为什么“参数”没有分配给“列表”? (我猜它显示 null 因为这个参数是 Parameter 类型。但是如何使它在当前上下文中使用?)
有人可以纠正我并给我写一个相当于 Converter() 的方法,我们已经从反序列化 xml 中获得了对象?会有很大的帮助。
【问题讨论】:
-
Parameter是复杂类型的实例,但您正试图将其转换为ICollection<Parameter>。您希望它如何工作?参数类是否实现ICollection<Parameter>? -
@SriramSakthivel 不,它不知道,但你知道其他方法来实现转换器()功能给定从 deserializd xml 获得的对象使用这个对象我必须呈现 UIElements。
-
不清楚你需要什么。你在找这个吗?
ICollection<Parameter> list = new List<Parameter> { parameter }; -
@SriramSakthivel 我必须在不使用内置 Converter() 函数的情况下实现 Converter() 功能。如您所知,它的原始结构是这样的:“public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfoculture)”其中“value”实际上是包含Parameter类对象的对象。因此,在当前情况下,我已经在反序列化 xml 时获得了对象,它是“参数”(来自 Parameter 类,它是我的 xml 的根类/元素)。
-
所以我要做的是实现 Converter() 功能,我们已经有了“参数”对象,所以我们可以这样做:ICollection
list = parameter as ICollection;列表 结果 = 新列表 ();
标签: c# .net converter xml-deserialization ivalueconverter