反射

本文介绍了一个使用C#编写的WCF服务客户端的示例代码,展示了如何调用WCF服务获取数据,使用数据合同类型传递复杂数据,并通过文件流操作进行文本读写。该示例涵盖了WCF服务的常见使用场景。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using TestWCF_Client.MyWCFReference;
using WcfServiceLibrary1;

namespace TestWCF_Client
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine(TestAssembly("Data", 23)); ;

            MyWCFServiceClient client = new MyWCFServiceClient();

            Console.WriteLine(client.GetData(2));

            CompositeType cType = new CompositeType()
            {
                BoolValue = true,
                StringValue = "Hello World!"

            };

            Console.WriteLine(client.GetDataUsingDataContract(cType).StringValue);
            string path = @"F:\projects\MyTest.txt"; ;

            if(File.Exists(path))
            {
                File.Delete(path);
            }

            using(FileStream fs=File.Create(path))
            {
                AddText(fs, "Hello");

                for(int i=0;i<20;i++)
                {
                    Console.WriteLine(Convert.ToChar(i).ToString()); ;
                    

                }
            }

            //open the stream and read it back
            using(FileStream fs=File.OpenRead(path))
            {
                byte[] b = new byte[1024];
                UTF8Encoding uTF8Encoding = new UTF8Encoding(true);
                while(fs.Read(b, 0, b.Length) >0)
                {
                    Console.WriteLine(System.Text.Encoding.ASCII.GetString(b));

                }

            }

            Console.Read();
        }

        public static object TestAssembly(string str,int n)
        {
            string path = Environment.CurrentDirectory + @"\WcfServiceLibrary1.dll";

            Assembly assembly = Assembly.LoadFrom(path);
            Type type=assembly.GetType("WcfServiceLibrary1.MyWCFService");

            object o = Activator.CreateInstance(type);
            MethodInfo method = type?.GetMethod("Get" + str);

            object result = method?.Invoke(o, new object[] { n });

            return result;



        }
        public static void AddText(FileStream fs, string text)
        {

            byte[] array = new UTF8Encoding(true).GetBytes(text); //---------------------------------------------------------

            fs.Write(array, 0, array.Length);


        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值