Parameter.cs
上传用户:zhangkuixh
上传日期:2013-09-30
资源大小:5473k
文件大小:2k
源码类别:

搜索引擎

开发平台:

C#

  1. /*
  2.  * Copyright 2004 The Apache Software Foundation
  3.  * 
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  * 
  8.  * http://www.apache.org/licenses/LICENSE-2.0
  9.  * 
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  */
  16. using System;
  17. namespace Lucene.Net.Util
  18. {
  19. /// <summary> A serializable Enum class.</summary>
  20. [Serializable]
  21. public abstract class Parameter
  22. {
  23. internal static System.Collections.IDictionary allParameters = new System.Collections.Hashtable();
  24. private System.String name;
  25. private Parameter()
  26. {
  27. // typesafe enum pattern, no public constructor
  28. }
  29. protected internal Parameter(System.String name)
  30. {
  31. // typesafe enum pattern, no public constructor
  32. this.name = name;
  33. System.String key = MakeKey(name);
  34. if (allParameters.Contains(key))
  35. throw new System.ArgumentException("Parameter name " + key + " already used!");
  36. allParameters[key] = this;
  37. }
  38. private System.String MakeKey(System.String name)
  39. {
  40. return GetType() + " " + name;
  41. }
  42. public override System.String ToString()
  43. {
  44. return name;
  45. }
  46. /// <summary> Resolves the deserialized instance to the local reference for accurate
  47. /// equals() and == comparisons.
  48. /// 
  49. /// </summary>
  50. /// <returns> a reference to Parameter as resolved in the local VM
  51. /// </returns>
  52. /// <throws>  ObjectStreamException </throws>
  53. protected internal virtual System.Object ReadResolve()
  54. {
  55. System.Object par = allParameters[MakeKey(name)];
  56. if (par == null)
  57. throw new System.IO.IOException("Unknown parameter value: " + name);
  58. return par;
  59. }
  60. }
  61. }