子曾经曰过

  博客园  :: 首页  ::  ::  ::  :: 管理

IOutputStreamService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.IO;
using System.Net;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
using System.Drawing;

namespace WcfStream
{
[ServiceContract]
public interface IOutputStreamService
{
[OperationContract]
Stream OutStream(Stream s);

[OperationContract]
string GetStr(string str);

[OperationContract]
void OutArgs(out string outstr1, out string outstr2, out string outstr3);

[OperationContract]
void InArgs(ref string refstr);

[OperationContract]
void RefOutArgs(ref string refstr, out string outstr); //先有传入参数,后有传出参数

[OperationContract]
void OutRefArgs(out string outstr, ref string refstr); //先有传入参数,后有传出参数

[OperationContract]
void GetDataTableByRefArgs(out DataTable datatable, ref string sql);

//[OperationContract]
//void GetImgFromClient(Bitmap img); 错误 Bitmap类型不能传递
}


}

OutputStreamService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.IO;
using System.Net;
using Microsoft.Win32;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
using System.Drawing;

namespace WcfStream
{
public class OutputStreamService : IOutputStreamService
{
public Stream OutStream(Stream s)
{
//IntPtr FileP = File.Open(@"C:\1.mp3", FileMode.OpenOrCreate, FileAccess.Read).Handle;
//s = new FileStream(FileP, FileAccess.Read);
return s;
}

public string GetStr(string str)
{
//Console.WriteLine(str);
//str = "ABC";
return str;
}

public void OutArgs(out string outstr1, out string outstr2, out string outstr3)
{
outstr1
= "第一个out参数.";
outstr2
= "第二个out参数.";
outstr3
= "第三个out参数.";
}

public void InArgs(ref string RefStr)
{
RefStr
+= "服务器端自己加点料."; //ResStr 初始值是客户端赋予的,客户端可以进一步处理
//MessageBox.Show(RefStr);
}
public void RefOutArgs(ref string refstr, out string outstr)
{
outstr
= refstr;
//MessageBox.Show(outstr);
}

public void OutRefArgs(out string outstr, ref string refstr) //先有传入参数,后有传出参数
{
//outstr = "服务器给传出值";
outstr = refstr; //传出值由传入值赋值
//MessageBox.Show(outstr);
}

public void GetDataTableByRefArgs(out DataTable datatable, ref string sql)
{
SqlConnection conn
= new SqlConnection(@"Data Source=WIN-1DHKKCMTGTE\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");
conn.Open();
SqlDataAdapter sda
= new SqlDataAdapter(sql, conn);
DataSet ds
= new DataSet();
sda.Fill(ds);
datatable
= ds.Tables[0];
}

public void GetImgFromClient(Bitmap img) //没有ref和out修饰的参数,谁调用谁给值,这点要记清楚!
{
img.Save(
@"C:\111.jpg");
}

}
}

调用代码Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.IO;
using System.Windows.Forms;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ServiceReference1.OutputStreamServiceClient sc
= new ConsoleApplication1.ServiceReference1.OutputStreamServiceClient();
Console.WriteLine(sc.GetStr(
"客户端赋值的字符串!"));

#region out 参数 begin 【out参数传递方向是从定义方法的地方开始传到调用方法的地方】
string outstr1;
string outstr2;
string outstr3;
outstr1
= sc.OutArgs(out outstr2, out outstr3); //outstr1跑哪儿去了?第一个参数这边成了函数的执行返回值
Console.WriteLine(outstr1 + ":" + outstr2 + ":" + outstr3);
#endregion

#region Ref 参数 begin 【ref参数叫传入参数,所以开始要有初始化,并且由被调用方给予初值】
string instr1 = "Ref参数的值由客户端赋值";
sc.InArgs(
ref instr1);
#endregion

#region Ref-Out 参数 begin
string refstr = "客户端是老大,老大给初值";
string outstr;
//Console.WriteLine(sc.OutInArgs(ref refstr,out outstr)); //看看输出结果是什么? 错误,函数返回值是第一个参数?
sc.RefOutArgs(ref refstr, out outstr);
#endregion

#region Out-Ref 参数 begin
//sc.OutRefArgs(ref refstr);
Console.WriteLine(sc.OutRefArgs(ref refstr)); //out参数此时成了函数返回值
#endregion Out-Ref 参数 end //参数里只要有ref,函数里ref的值优先于out得到值

#region 传入 sql 得到 查询结果
string sql = "select top 10 * from orders";
Console.WriteLine(sc.GetDataTableByRefArgs(
ref sql).Rows[0][0]);
#endregion

Console.ReadLine();


}
}
}
posted on 2011-02-15 01:29  人的本质是什么?  阅读(4908)  评论(0编辑  收藏  举报