CatalogBinder.cs
上传用户:huiyue
上传日期:2022-04-08
资源大小:1429k
文件大小:2k
源码类别:

搜索引擎

开发平台:

ASP/ASPX

  1. using System;
  2. using System.IO;
  3. using System.Runtime.Serialization;
  4. namespace Searcharoo.Common
  5. {
  6.     /// <summary>
  7.     /// Required by Binary Deserializer
  8.     /// </summary>
  9.     /// <remarks>
  10.     /// .NET XML and SOAP Serialization Samples, Tips (goxman)
  11.     /// http://www.codeproject.com/soap/Serialization_Samples.asp
  12.     /// 
  13.     /// It's a long story, but basically if you DON'T provide this information
  14.     /// the deserializer gets very confused if the code is recompiled and therefore
  15.     /// has a different 'Type(version)'. See the Catalog.Save() method for it's use.
  16.     /// </remarks>
  17.     public class CatalogBinder : SerializationBinder
  18.     {
  19.         public override Type BindToType(string assemblyName, string typeName)
  20.         {
  21.             // get the 'fully qualified (ie inc namespace) type name' into an array
  22.             string[] typeInfo = typeName.Split('.');
  23.             // because the last item is the class name, which we're going to 'look for'
  24.             // in *this* namespace/assembly
  25.             string className = typeInfo[typeInfo.Length - 1];
  26.             if (className.Equals("Catalog"))
  27.             {
  28.                 return typeof(Catalog);
  29.             }
  30.             else if (className.Equals("Word"))
  31.             {
  32.                 return typeof(Word);
  33.             }
  34.             else if (className.Equals("CatalogWordFile"))
  35.             {
  36.                 return typeof(CatalogWordFile);
  37.             }
  38.             if (className.Equals("File"))
  39.             {
  40.                 return typeof(File);
  41.             }
  42.             else
  43.             { // pass back exactly what was passed in!
  44.                 return Type.GetType(string.Format("{0}, {1}", typeName, assemblyName));
  45.             }
  46.         }
  47.     }
  48. }