Пример #1
0
        public override string ToString()
        {
            var result = $"{string.Join(", ", Modifiers)} class {Name} ";

            if (BaseTypes.Any())
            {
                result += $": {string.Join(", ", BaseTypes.Select(t => t.ToString()))}";
            }
            result += " { " + (Body?.ToString() ?? "") + " }";

            return(result);
        }
Пример #2
0
        /// <summary>
        /// Create the template output
        /// </summary>
        public override string TransformText()
        {
            this.Write("namespace ");
            
            #line 8 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(TargetNamespace));
            
            #line default
            #line hidden
            this.Write("\r\n{\r\n");
            
            #line 10 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		foreach (var ns in Usings) {

            
            #line default
            #line hidden
            this.Write("\tusing ");
            
            #line 13 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(ns));
            
            #line default
            #line hidden
            this.Write(";\r\n");
            
            #line 14 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		} 

            
            #line default
            #line hidden
            this.Write("\r\n\tpublic class ");
            
            #line 18 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(ClassName));
            
            #line default
            #line hidden
            this.Write(" : ");
            
            #line 18 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(", ", BaseTypes.Select(x => GetTypeName(x)))));
            
            #line default
            #line hidden
            this.Write(", IProxy\r\n\t{\r\n");
            
            #line 20 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		// We generate a delegate to reference these methods by signature, since 
		// we can't use Action or Func for them.
		foreach (var outRef in OutRefMethods) {

            
            #line default
            #line hidden
            this.Write("\t\tdelegate ");
            
            #line 25 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(outRef.ReturnType)));
            
            #line default
            #line hidden
            this.Write(" ");
            
            #line 25 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetDelegate(outRef)));
            
            #line default
            #line hidden
            this.Write("(");
            
            #line 25 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetParams(outRef)));
            
            #line default
            #line hidden
            this.Write(");\r\n");
            
            #line 26 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		} 

            
            #line default
            #line hidden
            this.Write("\t\tBehaviorPipeline pipeline;\r\n\t\tobject target;\r\n");
            
            #line 31 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		foreach (var iface in ImplementedInterfaces) {

            
            #line default
            #line hidden
            this.Write("\t\t");
            
            #line 34 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(iface)));
            
            #line default
            #line hidden
            this.Write(" ");
            
            #line 34 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldName(iface)));
            
            #line default
            #line hidden
            this.Write(";\r\n");
            
            #line 35 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		} 

            
            #line default
            #line hidden
            this.Write("\r\n\t\tpublic ");
            
            #line 39 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(ClassName));
            
            #line default
            #line hidden
            this.Write(" ()\r\n\t\t{\r\n\t\t\tpipeline = new BehaviorPipeline ();\r\n\t\t}\r\n\r\n\t\tpublic ");
            
            #line 44 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(ClassName));
            
            #line default
            #line hidden
            this.Write(" (object target)\r\n\t\t\t: this ()\r\n\t\t{\r\n\t\t\tthis.target = target;\r\n");
            
            #line 48 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		foreach (var iface in ImplementedInterfaces) {

            
            #line default
            #line hidden
            this.Write("\t\t\t");
            
            #line 51 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldName(iface)));
            
            #line default
            #line hidden
            this.Write(" = target as ");
            
            #line 51 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(iface)));
            
            #line default
            #line hidden
            this.Write(";\r\n");
            
            #line 52 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		} 

            
            #line default
            #line hidden
            this.Write("\t\t}\r\n\r\n\t\tIList<IProxyBehavior> IProxy.Behaviors => pipeline.Behaviors;\r\n\r\n");
            
            #line 59 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		foreach (var property in InterfaceProperties) {
			var targetVariable = GetFieldName(property.DeclaringType);

            
            #line default
            #line hidden
            this.Write("\r\n\t\t");
            
            #line 64 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(property.PropertyType)));
            
            #line default
            #line hidden
            this.Write(" ");
            
            #line 64 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(property.DeclaringType)));
            
            #line default
            #line hidden
            this.Write(".");
            
            #line 64 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetPropertyName(property)));
            
            #line default
            #line hidden
            
            #line 64 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetIndexParams(property)));
            
            #line default
            #line hidden
            this.Write("\r\n\t\t{ ");
            
            #line 65 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
 if (property.CanRead) { 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\tget\r\n\t\t\t{\r\n\t\t\t\tvar method = this.GetInterfaceMethod<");
            
            #line 69 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(property.DeclaringType)));
            
            #line default
            #line hidden
            this.Write(">((MethodInfo)MethodBase.GetCurrentMethod());\r\n\t\t\t\tvar invocation = new MethodInv" +
                    "ocation(this, method, new object[] { ");
            
            #line 70 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetIndexVars(property)));
            
            #line default
            #line hidden
            this.Write(" });\r\n\t\t\t\tvar returns = pipeline.Invoke(\r\n\t\t\t\t\tinvocation,\r\n\t\t\t\t\t(input, next) =>" +
                    " {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tvar returnValue = ");
            
            #line 75 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(targetVariable));
            
            #line default
            #line hidden
            this.Write(" != null ?\r\n\t\t\t\t\t\t\t\t");
            
            #line 76 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(targetVariable));
            
            #line default
            #line hidden
            
            #line 76 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CallProperty(property)));
            
            #line default
            #line hidden
            this.Write(" :\r\n\t\t\t\t\t\t\t\tdefault(");
            
            #line 77 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(property.PropertyType)));
            
            #line default
            #line hidden
            this.Write(");\r\n\r\n\t\t\t\t\t\t\treturn input.CreateValueReturn(returnValue, new object[] { ");
            
            #line 79 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetIndexVars(property)));
            
            #line default
            #line hidden
            this.Write(" });\r\n\t\t\t\t\t\t} catch (Exception ex) {\r\n\t\t\t\t\t\t\treturn input.CreateExceptionReturn(e" +
                    "x);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\tvar exception = returns.Exception;\r\n\t\t\t\tif (" +
                    "exception != null)\r\n\t\t\t\t\tthrow exception;\r\n");
            
            #line 89 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
 if (property.PropertyType.GetTypeInfo().IsValueType) { 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\t\treturn ((");
            
            #line 91 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(property.PropertyType)));
            
            #line default
            #line hidden
            this.Write("?)returns.ReturnValue).GetValueOrDefault ();\r\n");
            
            #line 92 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
 } else { 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\t\treturn ((");
            
            #line 94 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(property.PropertyType)));
            
            #line default
            #line hidden
            this.Write(")returns.ReturnValue);\r\n");
            
            #line 95 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
 } 
            
            #line default
            #line hidden
            this.Write("\t\t\t} ");
            
            #line 96 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
 } if (property.CanWrite) { 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\tset\r\n\t\t\t{\r\n\t\t\t\tvar method = this.GetInterfaceMethod<");
            
            #line 100 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(property.DeclaringType)));
            
            #line default
            #line hidden
            this.Write(">((MethodInfo)MethodBase.GetCurrentMethod());\r\n\t\t\t\tvar invocation = new MethodInv" +
                    "ocation(this, method, new object[] { ");
            
            #line 101 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetIndexVars(property)));
            
            #line default
            #line hidden
            this.Write(" });\r\n\t\t\t\tvar returns = pipeline.Invoke(\r\n\t\t\t\t\tinvocation,\r\n\t\t\t\t\t(input, next) =>" +
                    " {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tif (");
            
            #line 106 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(targetVariable));
            
            #line default
            #line hidden
            this.Write(" != null)\r\n\t\t\t\t\t\t\t\t");
            
            #line 107 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(targetVariable));
            
            #line default
            #line hidden
            
            #line 107 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CallProperty(property)));
            
            #line default
            #line hidden
            this.Write(" = value;\r\n\r\n\t\t\t\t\t\t\treturn input.CreateValueReturn(null, new object [] { ");
            
            #line 109 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetIndexVars(property)));
            
            #line default
            #line hidden
            this.Write(" });\r\n\t\t\t\t\t\t} catch (Exception ex) {\r\n\t\t\t\t\t\t\treturn input.CreateExceptionReturn(e" +
                    "x);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\tvar exception = returns.Exception;\r\n\t\t\t\tif (" +
                    "exception != null)\r\n\t\t\t\t\tthrow exception;\r\n\t\t\t} ");
            
            #line 119 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
 } 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t}\r\n");
            
            #line 122 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
 } 
            
            #line default
            #line hidden
            this.Write("\r\n");
            
            #line 124 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		foreach (var method in InterfaceMethods) {
			var targetVariable = GetFieldName(method.DeclaringType);

            
            #line default
            #line hidden
            this.Write("\r\n\t\t");
            
            #line 129 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(method.ReturnType)));
            
            #line default
            #line hidden
            this.Write(" ");
            
            #line 129 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(method.DeclaringType)));
            
            #line default
            #line hidden
            this.Write(".");
            
            #line 129 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
            
            #line default
            #line hidden
            this.Write("(");
            
            #line 129 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetParams(method)));
            
            #line default
            #line hidden
            this.Write(")\r\n\t\t{ ");
            
            #line 130 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

			foreach (var parameter in method.GetParameters().Where(p => p.IsOut)) { 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\t");
            
            #line 133 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(parameter.Name));
            
            #line default
            #line hidden
            this.Write(" = default(");
            
            #line 133 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(parameter.ParameterType)));
            
            #line default
            #line hidden
            this.Write("); ");
            
            #line 133 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

			}

            
            #line default
            #line hidden
            this.Write("\r\n\t\t\tvar method = this.GetInterfaceMethod<");
            
            #line 137 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetDelegate(method)));
            
            #line default
            #line hidden
            this.Write(", ");
            
            #line 137 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(method.DeclaringType)));
            
            #line default
            #line hidden
            this.Write(">(((");
            
            #line 137 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(method.DeclaringType)));
            
            #line default
            #line hidden
            this.Write(")this).");
            
            #line 137 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
            
            #line default
            #line hidden
            this.Write(");\r\n\t\t\tvar invocation = new MethodInvocation(this, method, new object[] { ");
            
            #line 138 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetVars(method)));
            
            #line default
            #line hidden
            this.Write(" });\r\n\t\t\tvar returns = pipeline.Invoke(\r\n\t\t\t\tinvocation,\r\n\t\t\t\t(input, next) => {\r" +
                    "\n\t\t\t\t\ttry\r\n\t\t\t\t\t{ ");
            
            #line 143 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

			foreach (var parameter in method.GetParameters().Where(p => p.IsOut || p.ParameterType.IsByRef)) {
				var parameterType = GetTypeName(parameter.ParameterType); 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\t\t\t\tvar local_");
            
            #line 147 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(parameter.Name));
            
            #line default
            #line hidden
            this.Write(" = ");
            
            #line 147 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(parameter.IsOut ? "default(" + parameterType + ")" : "(" + parameterType + ")invocation.Arguments[" + parameter.Position + "];"));
            
            #line default
            #line hidden
            this.Write("; ");
            
            #line 147 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

			}

			if (method.ReturnType == typeof(void)) { 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\t\t\t\tif (");
            
            #line 152 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(targetVariable));
            
            #line default
            #line hidden
            this.Write(" != null)\r\n\t\t\t\t\t\t\t");
            
            #line 153 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(targetVariable));
            
            #line default
            #line hidden
            this.Write(".");
            
            #line 153 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
            
            #line default
            #line hidden
            this.Write("(");
            
            #line 153 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetArgs(method)));
            
            #line default
            #line hidden
            this.Write(");\r\n\r\n\t\t\t\t\t\treturn input.CreateValueReturn(null, new object[] { ");
            
            #line 155 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetVars(method)));
            
            #line default
            #line hidden
            this.Write(" }); ");
            
            #line 155 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

			} else { 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\t\t\t\tvar returnValue = ");
            
            #line 158 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(targetVariable));
            
            #line default
            #line hidden
            this.Write(" != null ?\r\n\t\t\t\t\t\t\t");
            
            #line 159 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(targetVariable));
            
            #line default
            #line hidden
            this.Write(".");
            
            #line 159 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
            
            #line default
            #line hidden
            this.Write("(");
            
            #line 159 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetArgs(method)));
            
            #line default
            #line hidden
            this.Write(") :\r\n\t\t\t\t\t\t\tdefault(");
            
            #line 160 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(method.ReturnType)));
            
            #line default
            #line hidden
            this.Write(");\r\n\r\n\t\t\t\t\t\treturn input.CreateValueReturn(returnValue, new object[] { ");
            
            #line 162 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetVars(method)));
            
            #line default
            #line hidden
            this.Write(" }); ");
            
            #line 162 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

			} 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch (Exception ex)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn input.CreateExceptionRe" +
                    "turn(ex);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tvar exception = returns.Exception;\r\n\t\t\tif " +
                    "(exception != null)\r\n\t\t\t\tthrow exception;\r\n");
            
            #line 176 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
 if (method.ReturnType != typeof(void)) {
		if (method.ReturnType.GetTypeInfo().IsValueType) { 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\treturn ((");
            
            #line 179 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(method.ReturnType)));
            
            #line default
            #line hidden
            this.Write("?)returns.ReturnValue).GetValueOrDefault ();\r\n");
            
            #line 180 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
		} else { 
            
            #line default
            #line hidden
            this.Write("\r\n\t\t\treturn ((");
            
            #line 182 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(method.ReturnType)));
            
            #line default
            #line hidden
            this.Write(")returns.ReturnValue);\r\n");
            
            #line 183 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"
		}
	}
 
            
            #line default
            #line hidden
            this.Write("\t\t}\r\n");
            
            #line 187 "C:\Code\Personal\moq.proxy\src\Moq.Proxy.Static\Templates\CsInterfaceProxy.tt"

		} 

            
            #line default
            #line hidden
            this.Write("\t}\r\n}");
            return this.GenerationEnvironment.ToString();
        }