동일한 네임 스페이스를 사용하여 WPF Markup Extension 내부에서 유형 해상도를 시도하고 있습니다. StaticExtension이 사용하는 StaticType.Property 구문. 이 확장은 런타임과 Visual Studio 디자이너에서 잘 작동하지만 Expression Blend에서는 실패합니다. 일부 디버깅 후 IXamlTypeResolver.Resolve() 호출이 실패했음을 알았습니다.IXAmlTypeResolver.Resolve가 블렌드에서 실패했습니다.
// 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);
문제는 service.Resolve (typeName)가 실패하지만 Blend에서만 발생합니다.
반사체가있는 StaticExtension을 살펴보면 MS가 사용하는 코드가 크게 달라 보이지 않습니다.
보안 문제처럼 보입니다.하지만 어셈블리에 서명하고 GAC를 시도했는데 여전히 정확하게 동일하지 않습니다.
Stumped.