Ich versuche, einige Typauflösung innerhalb einer WPF-Markup-Erweiterung mit dem gleichen Namespace zu tun: StaticType.Property-Syntax, die StaticExtension verwendet. Die Erweiterung funktioniert zur Laufzeit und auch im Visual Studio-Designer, schlägt aber in Expression Blend fehl. Nach einigen Debugging habe ich herausgefunden, dass der Fehler in einem Aufruf von IXamlTypeResolver.Resolve() auftritt.IXAmlTypeResolver.Resolve fehlgeschlagen in Blend
// 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);
Das Problem ist der service.Resolve (typeName), die fehlschlägt, aber nur in Blend.
Wir haben uns die StaticExtension mit Reflector angesehen und der Code, den MS verwendet, sieht nicht viel anders aus.
Es sieht aus wie ein Sicherheitsproblem - aber ich habe sogar versucht, zu signieren und GAC die Assembly und es immer noch genau das gleiche fehlschlägt.
Stumped.