J'essaie de faire une résolution de type à l'intérieur d'une extension de balisage WPF en utilisant le même espace de noms: la syntaxe StaticType.Property utilisée par StaticExtension. L'extension fonctionne correctement à l'exécution et dans le concepteur Visual Studio, mais elle échoue dans Expression Blend. Après un débogage, j'ai compris que l'échec se produisait dans un appel à IXamlTypeResolver.Resolve().IXAmlTypeResolver.Resolve échoue dans le mélange
// Parse Static=properties:Resources.HelloWorld like static resource
int index = this.Static.IndexOf('.');
if (index == -1)
throw new ArgumentException(Resources.InvalidStaticBindingSyntax + ": " +
this.Static);
// resolve properties:Resources
string typeName = this.Static.Substring(0, index);
IXamlTypeResolver service = _serviceProvider.GetService(typeof(IXamlTypeResolver))
as IXamlTypeResolver;
Type memberType = service.Resolve(typeName);
string propName = this.Static.Substring(index + 1);
localized = memberType.GetProperty(propName,
BindingFlags.Public |
BindingFlags.Static |
BindingFlags.FlattenHierarchy)
.GetValue(memberType, null);
Le problème est le service.Resolve (typeName) qui échoue, mais seulement dans le mélange.
Jetez un coup d'œil à l'extension statique avec réflecteur et le code que MS utilise ne semble pas très différent.
Cela ressemble à un problème de sécurité - mais j'ai même essayé de signer et GAC l'assemblage et il échoue toujours exactement la même chose.
Trempé.