То, что у вас есть, будет работать в .NET 4.0, но, к сожалению, не в .NET 3.5.Попробуйте вместо этого использовать XamlTypeMapper:
var context = new ParserContext();
context.XamlTypeMapper = new XamlTypeMapper(new string[] { });
context.XamlTypeMapper.AddMappingProcessingInstruction("", "Farm", "Farm");
XamlReader.Parse("<Pig/>", context);
Если вы хотите использовать префикс пространства имен, вы можете объявить пространство имен clr для сопоставления пространства имен xml с XamlTypeMapper, а затем объявить префикс пространства имен для пространства имен xml.
var context = new ParserContext();
context.XamlTypeMapper = new XamlTypeMapper(new string[] { });
context.XamlTypeMapper.AddMappingProcessingInstruction("Foo", "Farm", "Farm");
context.XmlnsDictionary.Add("a", "Foo");
XamlReader.Parse("<a:Pig/>", context);