diff Demo/WebServices/Client/WebClient/WebClientBaseT.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Demo/WebServices/Client/WebClient/WebClientBaseT.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,39 @@
+using BLToolkit.TypeBuilder;
+
+namespace Demo.WebServices.Client.WebClient
+{
+	[System.Diagnostics.DebuggerStepThrough]
+	[System.ComponentModel.DesignerCategory("Code")]
+	public abstract class WebClientBase<T> : WebClientBase where T : WebClientBase /*<T> commented due to csc.exe bug */
+	{
+		/// <summary>
+		/// Initializes a new instance of the <see cref="WebClientBase"/> class
+		/// using the namespace from WebServiceBinding attribute as url.
+		/// </summary>
+		protected WebClientBase()
+		{
+		}
+
+		/// <summary>
+		/// Initializes a new instance of the <see cref="WebClientBase"/> class.
+		/// </summary>
+		/// <param name="relativeUrl">Path to web service, relative to <see cref="WebClientBase.BaseUrl"/>.</param>
+		protected WebClientBase(string relativeUrl) : base(relativeUrl)
+		{
+		}
+
+		/// <summary>
+		/// Cached client instance.
+		/// </summary>
+		private static T _instance;
+		public  static T  Instance
+		{
+			get { return _instance ?? (_instance = CreateInstance()); }
+		}
+
+		protected static T CreateInstance()
+		{
+			return TypeFactory.CreateInstance<T>();
+		}
+	}
+}
\ No newline at end of file