C#中怎么使用公共类?创建一个公共类,怎么让其他页面来调用该类?

 我来答
转圈圈小仙女
推荐于2019-08-18 · TA获得超过7739个赞
知道小有建树答主
回答量:15
采纳率:100%
帮助的人:2269
展开全部

[c-sharp] view plaincopy

using System;   

using System.Diagnostics;   

using System.IO;   

using System.Reflection;      

namespace InvokeMember   

{       

///        

/// Class1 的摘要说明。       

///        

class Class1 { ///            

/// 应用程序的主入口点。           

///           

[STAThread]           

static void Main(string[] args)           

{               

//循环次数               

const int iterations = 100;               

//计算所用时间               

DateTime startTime = DateTime.Now;               

for(int i = 0;i< iterations;i++) { //对照方法                   

Console.WriteLine("Hello,World");               

}               

TimeSpan elasped = DateTime.Now - startTime;               

Console.WriteLine("Looping Elapsed milliseconds:" + elasped.TotalMilliseconds + "for {0} iterations",iterations);                              

//使用反射发送               

ReflectionTest t = new ReflectionTest();              

//计算所用时间               

startTime = DateTime.Now;               

for(int i = 0;i < iterations;i++)               

{                   

t.DoOperation();               

}                              

elasped = DateTime.Now - startTime;                  

Console.WriteLine("Looping Elapsed milliseconds:" + elasped.TotalMilliseconds + "for {0} iterations",iterations);               

Console.ReadLine();           

}   

}        

///        

/// Reflection 的摘要说明。      

///       

public class ReflectionTest      

{          

//保存动态生成并编译的类的type对象           

Type theType = null;           

//保存动态生成类的实例           

object theClass = null;              

///            

/// 供Client调用的方法           

///            

public void DoOperation()           

{               

//未初始化               

if(theType == null)              

{                  

//初始化                   

GenerateCode();               

}               

//调用方法时的参数数组(此处为空)               

object[] arguments = new object[0];              

//调用动态生成类的方法               

theType.InvokeMember("SayHello",//要调用的方法名                   BindingFlags.Default|BindingFlags.InvokeMethod,//Binding标志,具体参看msdn                   null,//使用默认Binding对象                   

theClass,//在theClass实例上调用此方法                   

arguments//调用方法时的参数数组                   );          

}              

///            

/// 运行时生成代码           

///            

private void GenerateCode()          

{              

//文件名               

string fileName = "Test";               

//打开文件,如果不存在,则创建               

Stream s = File.Open(fileName + ".cs",FileMode.Create);              

//创建一个StreamWriter来写入数据               

StreamWriter wrtr = new StreamWriter(s);               

//写入动态创建类的源代码               

wrtr.WriteLine("// 动态创建Test类");                  

//类名               

string className = "TestClass";               

wrtr.WriteLine("using System;");               

wrtr.WriteLine("class {0}",className);              

wrtr.WriteLine("{");                 

wrtr.WriteLine("/tpublic void SayHello()");               

wrtr.WriteLine("/t{");                  

wrtr.WriteLine("/t/tConsole.WriteLine(/"Hello,World/");");               

wrtr.WriteLine("/t}");               

wrtr.WriteLine("}");                  

//关闭StreamWriter和文件               

wrtr.Close();               

s.Close();                  

//启动进程编译源文件               

//指定参数               

ProcessStartInfo psi = new ProcessStartInfo();               

//启动cmd.exe               

psi.FileName = "cmd.exe";              

//cmd.exe的参数,/c-close,完成后关闭;后为参数,指定cmd.exe使用csc来编译刚才生成的源文件               

string compileString = "/c C://WINNT//Microsoft.NET//Framework//v1.1.4322//csc.exe /optimize+ /target:library {0}.cs";              

psi.Arguments = String.Format(compileString,fileName);             

//运行时的风格-最小化               

psi.WindowStyle = ProcessWindowStyle.Minimized;                         

//启动进程               

Process proc = Process.Start(psi);               

//指定当前在此进程退出前等待               

proc.WaitForExit();                  

//从编译好的dll文件load一个Assembly               

Assembly a = Assembly.LoadFrom(fileName + ".dll");                  

//创建类的实例               

theClass = a.CreateInstance(className);              

//取得此类实例的类型               

theType = a.GetType(className);              

//删除源文件              

//File.Delete(flieName + ".cs");          

}      

}  

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式