首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用IXamlTypeResolver解析泛型类型

用IXamlTypeResolver解析泛型类型
EN

Stack Overflow用户
提问于 2011-09-29 08:18:38
回答 1查看 725关注 0票数 2

我编写了一个新的TypeExtension类,它取代了默认的System.Windows.Markup.TypeExtension来处理泛型类型。它允许Xaml以多种不同的方式处理泛型类型,例如:

代码语言:javascript
运行
复制
<DataTemplate DataType="{ck:Type [here a generic type name]}">

这就是它的工作原理:

  1. 我编写了TypeExtention类,它继承了MarkupExtension (在示例中是ck:Type )
  2. ,我将重写ProvideValue方法来调用IXamlTypeResolver上的解析

IXamlTypeResolver service = p.GetService( true );

_type = service.Resolve( _typeName );

因此,在.NET 3.5中,我可以解析“local‘1”这样的类型。但是现在在.NET 4中(使用WPF 4),解析方法抛出一个异常:

字符'' was unexpected in string 'local:IConfigItemProperty1‘。无效的XAML类型名称。

你认为.NET 4.0不再支持“”吗?

EN

回答 1

Stack Overflow用户

发布于 2012-02-07 12:16:05

虽然这篇文章有点老了,但我给出了其他开发人员寻找解决方案的答案。从4.0开始,他们似乎改变了Reader处理泛型的方式。IXamlTypeResolver服务缺乏对“”的支持似乎是一个缺陷,而回归则完全没有文档记录。如果您想使用泛型,您可能需要用x:TypeArguments进行切换,它列出了泛型的参数。

C#

代码语言:javascript
运行
复制
public class GraphBase<N,L,P> : IGraph<N,L,P>
{
...
}

XAML

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8" ?>
<GraphBase
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       xmlns="clr-namespace:MyGeoLive.Topology;assembly=MyGeoLive.Topology"
       xmlns:System="clr-namespace:System;assembly=mscorlib"
       x:TypeArguments="System:String,System:String,System:String" >

</GraphBase>  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7594363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档