中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

可以用來做視頻網(wǎng)站的視頻外鏈嗎網(wǎng)絡(luò)營銷專員的就業(yè)前景

可以用來做視頻網(wǎng)站的視頻外鏈嗎,網(wǎng)絡(luò)營銷專員的就業(yè)前景,人力資源外包,來自網(wǎng)站的臨時會話前言 反射使用,讓我們的程序可以動態(tài)增加一些功能,讓原本固化的步驟邏輯變得動態(tài),這是它的優(yōu)點。當(dāng)然使用反射首次加載會有性能損耗以及使用復(fù)雜;但是現(xiàn)在大家都在講動態(tài),使用好它應(yīng)該是一個重要的編程理念提升。MVC、…

前言

反射使用,讓我們的程序可以動態(tài)增加一些功能,讓原本固化的步驟邏輯變得動態(tài),這是它的優(yōu)點。當(dāng)然使用反射首次加載會有性能損耗以及使用復(fù)雜;但是現(xiàn)在大家都在講動態(tài),使用好它應(yīng)該是一個重要的編程理念提升。MVC、ORM、IOC、AOPA都有使用這個東西了。如果要考慮性能,可以考慮緩存程序集,我們保證程序只加載一次就好。

一、直接利用反射讀寫對象的值

 static void Main(string[] args){Person p = new Person() { Name = "丁竹", Age = 26, Sex = true };p.Working("readinof");//利用反射讀取值object obj = p;var type = obj.GetType();foreach (var item in type.GetProperties()){string value = item.GetValue(obj, null).ToString();Console.WriteLine($"{item.Name} {value}");}Assembly ass = Assembly.Load("ReadInfo");object pObj = ass.CreateInstance("ReadInfo.Person");//利用反射設(shè)置值{System.Reflection.PropertyInfo propertyInfo = type.GetProperty("Name");propertyInfo.SetValue(obj, "ding", null);}Console.Read();}

二、通過反射調(diào)用實例

 static void Main(string[] args){//[1].CsharpCodePrivode//提供對C#代碼生成器和代碼編譯器的實例的訪問。如果要動態(tài)生成VB代碼,可以使用VBCodeProvider.//CreateCompiler():獲取編譯器的實例CSharpCodeProvider objcsharpcodeprivoder = new CSharpCodeProvider();//[2].ICodeComplier//定義用于調(diào)用源代碼編譯的接口或使用指定編譯器的CodeDOM樹。//每種編譯方法都接受編譯器的ComplierParameter對象,并返回指示編譯結(jié)果的CompilerResults對象ICodeCompiler codeCompiler = objcsharpcodeprivoder.CreateCompiler();//[3].ComplierParameters 表示用于調(diào)用編譯器的參數(shù)//ReferencedAssembies:獲取當(dāng)前項目所引用的程序集。Add方法為程序集添加引用//GenerateExecutable:獲取或設(shè)置一個值,該值指示是否生成可執(zhí)行文件。若此屬性為false,則生成Dll,默認(rèn)是false.//GenerateInMemor:獲取或設(shè)置一個值,該值指示是否在內(nèi)存中生成輸出。CompilerParameters objcompilerparameters = new CompilerParameters();// objcompilerparameters.ReferencedAssemblies.Add("System.dll");objcompilerparameters.GenerateExecutable = false;objcompilerparameters.GenerateInMemory = true;//[4].CompilerResults 表示從編譯器返回的編譯結(jié)果//CompiedAssembly:獲取或設(shè)置以編譯的程序集,Assembly類型。CompilerResults cr = codeCompiler.CompileAssemblyFromSource(objcompilerparameters, GenerateCode());if (cr.Errors.HasErrors){Console.WriteLine("編譯錯誤:");foreach (CompilerError item in cr.Errors){Console.WriteLine(item.ErrorText);}}else{//通過反饋,調(diào)用HelloWorld實例Assembly assembly = cr.CompiledAssembly;object objHelloWorld = assembly.CreateInstance("DynamicCodeGenerate.HelloWorld");MethodInfo objMI = objHelloWorld.GetType().GetMethod("OutPut");Console.WriteLine(objMI.Invoke(objHelloWorld,null));}Console.ReadLine();}static string GenerateCode(){StringBuilder sb = new StringBuilder();sb.Append("using System;");sb.Append(Environment.NewLine);sb.Append("namespace DynamicCodeGenerate");sb.Append(Environment.NewLine);sb.Append("{");sb.Append(Environment.NewLine);sb.Append(" public class HelloWorld");sb.Append(Environment.NewLine);sb.Append(" {");sb.Append(Environment.NewLine);sb.Append(" public string OutPut()");sb.Append(Environment.NewLine);sb.Append(" {");sb.Append(Environment.NewLine);sb.Append(" return \"Hello world!\";");sb.Append(Environment.NewLine);sb.Append(" }");sb.Append(Environment.NewLine);sb.Append(" }");sb.Append(Environment.NewLine);sb.Append(" }");string code = sb.ToString();Console.WriteLine(code);Console.WriteLine();return code;}

三、通過動態(tài)加載Dll生成實例

  dom.DoCompileFile(Path.Combine(pathStr, filename), "Test.dll");MySampleDomain = AppDomain.CreateDomain("MySampleDomain");ass = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "Test.dll");obj = MySampleDomain.CreateInstanceAndUnwrap(ass.FullName, "Sample.Demo");

四、通過反射調(diào)用方法

  Type type = obj.GetType();MethodInfo method = type.GetMethod("Add");int a=Convert.ToInt32( method.Invoke(obj, new object[] { 1,3 }));Console.WriteLine(a);

五、完整代碼

public class ReflexHelp{public void Execute(string gencode){//[1].CsharpCodePrivode//提供對C#代碼生成器和代碼編譯器的實例的訪問。如果要動態(tài)生成VB代碼,可以使用VBCodeProvider.//CreateCompiler():獲取編譯器的實例CSharpCodeProvider objcsharpcodeprivoder = new CSharpCodeProvider();//[2].ICodeComplier//定義用于調(diào)用源代碼編譯的接口或使用指定編譯器的CodeDOM樹。//每種編譯方法都接受編譯器的ComplierParameter對象,并返回指示編譯結(jié)果的CompilerResults對象ICodeCompiler codeCompiler = objcsharpcodeprivoder.CreateCompiler();//[3].ComplierParameters 表示用于調(diào)用編譯器的參數(shù)//ReferencedAssembies:獲取當(dāng)前項目所引用的程序集。Add方法為程序集添加引用//GenerateExecutable:獲取或設(shè)置一個值,該值指示是否生成可執(zhí)行文件。若此屬性為false,則生成Dll,默認(rèn)是false.//GenerateInMemor:獲取或設(shè)置一個值,該值指示是否在內(nèi)存中生成輸出。CompilerParameters objcompilerparameters = new CompilerParameters();// objcompilerparameters.ReferencedAssemblies.Add("System.dll");objcompilerparameters.GenerateExecutable = false;objcompilerparameters.GenerateInMemory = true;//[4].CompilerResults 表示從編譯器返回的編譯結(jié)果//CompiedAssembly:獲取或設(shè)置以編譯的程序集,Assembly類型。CompilerResults cr = codeCompiler.CompileAssemblyFromSource(objcompilerparameters, gencode);if (cr.Errors.HasErrors){Console.WriteLine("編譯錯誤:");foreach (CompilerError item in cr.Errors){Console.WriteLine(item.ErrorText);}}else{//通過反饋,調(diào)用HelloWorld實例Assembly assembly = cr.CompiledAssembly;object objHelloWorld = assembly.CreateInstance("DynamicCodeGenerate.HelloWorld");MethodInfo objMI = objHelloWorld.GetType().GetMethod("OutPut");Console.WriteLine(objMI.Invoke(objHelloWorld, null));}}public object GenObject(string dllFileName, string typeName){Assembly ass = Assembly.LoadFile(dllFileName);return ass.CreateInstance(typeName);}public int GetAddInfo(object obj, string methrName){Type type = obj.GetType();MethodInfo method = type.GetMethod(methrName);return Convert.ToInt32(method.Invoke(obj, new object[] { 1, 3 }));}/// <summary>/// 編譯代碼/// </summary>/// <param name="provider">編譯器</param>/// <param name="sourceFile">源文件</param>/// <param name="gentenFile">生成文件名</param>/// <returns>編譯結(jié)果</returns>public CompilerResults CompileCode(CodeDomProvider provider, string sourceFile, string gentenFile){string[] referenceAssemblies = { "System.dll" };CompilerParameters cp = new CompilerParameters(referenceAssemblies, gentenFile, false);cp.GenerateExecutable = false;//設(shè)置是否要包含一個入口點CompilerResults cr = provider.CompileAssemblyFromFile(cp, sourceFile);return cr;}}

http://www.risenshineclean.com/news/52579.html

相關(guān)文章:

  • 產(chǎn)品經(jīng)理做網(wǎng)站網(wǎng)站頁面
  • 跨境電子商務(wù)網(wǎng)站建設(shè)ks免費刷粉網(wǎng)站推廣
  • 網(wǎng)絡(luò)運(yùn)營一個月工資寧波seo推廣方式排名
  • 荔灣做網(wǎng)站上海優(yōu)化公司排行榜
  • wordpress pdf 免費濰坊seo按天收費
  • flash做安卓游戲下載網(wǎng)站百度官方首頁
  • 《水利建設(shè)與管理》雜志社網(wǎng)站上海高端網(wǎng)站定制
  • Linux下使用wordpress公司seo排名優(yōu)化
  • 提供專業(yè)網(wǎng)站建設(shè)平臺收錄是什么意思
  • 心得體會萬能模板免費網(wǎng)站seo
  • 有些網(wǎng)站下方只有版權(quán)沒有ICP簡述seo和sem的區(qū)別與聯(lián)系
  • 北京網(wǎng)站推廣怎么做不屬于網(wǎng)絡(luò)推廣方法
  • 公司網(wǎng)站建設(shè)需要多少錢googleplay官方下載
  • 買2g 空間做下載網(wǎng)站全網(wǎng)搜索關(guān)鍵詞查詢
  • 邯鄲網(wǎng)站設(shè)計哪家好好省推廣100種方法
  • h5可以用什么網(wǎng)站做app推廣渠道商
  • 幫企業(yè)建網(wǎng)站步驟seo公司杭州
  • 網(wǎng)站設(shè)計美工多少搜索引擎優(yōu)化大致包含哪些內(nèi)容或環(huán)節(jié)
  • xp怎么做網(wǎng)站服務(wù)器太原做網(wǎng)站的
  • wordpress播放本地mp3seo關(guān)鍵詞排名注冊價格
  • 全市網(wǎng)站建設(shè)情況摸底調(diào)查百度網(wǎng)站關(guān)鍵詞排名查詢
  • 網(wǎng)站設(shè)計制作費用多少怎么做互聯(lián)網(wǎng)營銷推廣
  • 南陽東莞網(wǎng)站建設(shè)公司優(yōu)化排名推廣關(guān)鍵詞
  • 網(wǎng)站可以微信支付是怎么做的域名停靠網(wǎng)頁推廣大全
  • 網(wǎng)站定制化開發(fā)介紹新網(wǎng)
  • 哈爾濱網(wǎng)站建設(shè)2017站長統(tǒng)計 網(wǎng)站統(tǒng)計
  • 西安做網(wǎng)站朋朋抖音關(guān)鍵詞推廣
  • 商城網(wǎng)站建設(shè)系統(tǒng)企業(yè)網(wǎng)站建設(shè)推廣
  • 免費網(wǎng)站推廣軟文發(fā)布中國國家數(shù)據(jù)統(tǒng)計網(wǎng)
  • 網(wǎng)站備案密碼忘做seo需要哪些知識