public override Type ResolveName(string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver)
{
if (!typeNamespace.StartsWith("http://tempuri.com"))
{
return knownTypeResolver.ResolveName(typeName, typeNamespace, declaredType, null);
}
string PluginName = typeNamespace.Substring("http://tempuri.com".Length + 1);
System.Reflection.Assembly asm = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(p => p.FullName == PluginName);
var t = asm.GetTypes().Where(p => p.GetCustomAttributes(typeof(DataContractAttribute), false).Length > 0).FirstOrDefault(p => p.Name == typeName);
if (t != null)
return t;
return knownTypeResolver.ResolveName(typeName, typeNamespace, declaredType, null);
}