当前位置: 首页 > wzjs >正文

如何做网站公证pc端网站转手机站怎么做

如何做网站公证,pc端网站转手机站怎么做,北京网站托管公司,上海百度关键词优化公司以前C#脚本用的委托注入模式,今天在AI提示下,尝试用脚本直接实现接口,然后C#可以动态或指定新类型创建接口实现对象。从代码角度看,稍显复杂,但脚本方面显得更简洁和有条理。 引用包需要Microsoft.CodeAnalysis、Micro…

       以前C#脚本用的委托注入模式,今天在AI提示下,尝试用脚本直接实现接口,然后C#可以动态或指定新类型创建接口实现对象。从代码角度看,稍显复杂,但脚本方面显得更简洁和有条理。

    引用包需要Microsoft.CodeAnalysis、Microsoft.CodeAnalysis.Common等,其他自动添加:

<?xml version="1.0" encoding="utf-8"?>
<packages><package id="Humanizer.Core" version="2.14.1" targetFramework="net472" /><package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net472" /><package id="Microsoft.CodeAnalysis" version="4.13.0" targetFramework="net472" /><package id="Microsoft.CodeAnalysis.Analyzers" version="3.11.0" targetFramework="net472" developmentDependency="true" /><package id="Microsoft.CodeAnalysis.Common" version="4.13.0" targetFramework="net472" /><package id="Microsoft.CodeAnalysis.CSharp" version="4.13.0" targetFramework="net472" /><package id="Microsoft.CodeAnalysis.CSharp.Scripting" version="4.13.0" targetFramework="net472" /><package id="Microsoft.CodeAnalysis.CSharp.Workspaces" version="4.13.0" targetFramework="net472" /><package id="Microsoft.CodeAnalysis.Scripting.Common" version="4.13.0" targetFramework="net472" /><package id="Microsoft.CodeAnalysis.VisualBasic" version="4.13.0" targetFramework="net472" /><package id="Microsoft.CodeAnalysis.VisualBasic.Workspaces" version="4.13.0" targetFramework="net472" /><package id="Microsoft.CodeAnalysis.Workspaces.Common" version="4.13.0" targetFramework="net472" /><package id="Microsoft.CSharp" version="4.7.0" targetFramework="net472" /><package id="System.Buffers" version="4.5.1" targetFramework="net472" /><package id="System.Collections.Immutable" version="8.0.0" targetFramework="net472" /><package id="System.Composition" version="8.0.0" targetFramework="net472" /><package id="System.Composition.AttributedModel" version="8.0.0" targetFramework="net472" /><package id="System.Composition.Convention" version="8.0.0" targetFramework="net472" /><package id="System.Composition.Hosting" version="8.0.0" targetFramework="net472" /><package id="System.Composition.Runtime" version="8.0.0" targetFramework="net472" /><package id="System.Composition.TypedParts" version="8.0.0" targetFramework="net472" /><package id="System.IO.Pipelines" version="8.0.0" targetFramework="net472" /><package id="System.Memory" version="4.5.5" targetFramework="net472" /><package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" /><package id="System.Reflection.Metadata" version="8.0.0" targetFramework="net472" /><package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" /><package id="System.Text.Encoding.CodePages" version="7.0.0" targetFramework="net472" /><package id="System.Threading.Channels" version="7.0.0" targetFramework="net472" /><package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
</packages>

      接口定义如下:

namespace WindowsFormsApp1
{public interface IFlexiblePluginAgent{string RegistDrType();}
}

验证文件TextFile1.txt如下:

using System;
using System.Collections.Generic;public class FlexiblePluginAgentProcessScriptXXXX : WindowsFormsApp1.IFlexiblePluginAgent
{public string RegistDrType(){return "scritp_drv";}
}

加载和验证代码如下:

using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.Emit;
using Microsoft.CodeAnalysis;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;namespace WindowsFormsApp1
{internal static class Program{/// <summary>/// 应用程序的主入口点。/// </summary>[STAThread]static void Main(){ScriptTest();}static void ScriptTest(){try{// 读取外部代码文件string codeFilePath = "TextFile1.txt";string sourceCode = File.ReadAllText(codeFilePath);var compilation = CSharpCompilation.Create("DynamicAssembly").WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)).AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location)).AddReferences(MetadataReference.CreateFromFile(typeof(IFlexiblePluginAgent).Assembly.Location)).AddSyntaxTrees(CSharpSyntaxTree.ParseText(sourceCode));// 检查编译错误var diagnostics = compilation.GetDiagnostics();if (diagnostics.HasAnyErrors()){Console.WriteLine("编译错误:");foreach (var diagnostic in diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error)){Console.WriteLine(diagnostic.ToString());}return;}// 内存中生成程序集using (var ms = new MemoryStream()){EmitResult emitResult = compilation.Emit(ms);if (!emitResult.Success){Console.WriteLine("程序集生成失败:");foreach (var diagnostic in emitResult.Diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error)){Console.WriteLine(diagnostic.ToString());}return;}ms.Seek(0, SeekOrigin.Begin);Assembly assembly = Assembly.Load(ms.ToArray());Console.WriteLine("---检查程序集中是否有IFlexiblePluginAgent的派生类---");var derivedTypes = assembly.DefinedTypes.Where(t => typeof(IFlexiblePluginAgent).IsAssignableFrom(t) && !t.IsInterface).ToList();if (derivedTypes.Any()){Console.WriteLine("找到以下IFlexiblePluginAgent的派生类:");foreach (var type in derivedTypes){Console.WriteLine($"  - {type.FullName}");}// 使用第一个派生类创建对象Type agentType = derivedTypes.First().AsType();IFlexiblePluginAgent agent = (IFlexiblePluginAgent)Activator.CreateInstance(agentType);string result = agent.RegistDrType();Console.WriteLine($"注册的 DrType 是: {result}");}else{Console.WriteLine("未找到IFlexiblePluginAgent的派生类");}Console.WriteLine("---知道类名字直接调用---");Type agentType2 = assembly.GetType("FlexiblePluginAgentProcessScriptXXXX");if (agentType2 == null){Console.WriteLine("未找到 MyPluginAgent 类型");return;}IFlexiblePluginAgent agent2 = (IFlexiblePluginAgent)Activator.CreateInstance(agentType2);string result2 = agent2.RegistDrType();Console.WriteLine($"注册的 DrType 是: {result2}");}}catch (Exception ex){Console.WriteLine($"发生错误: {ex.Message}");}}}// 扩展方法用于检查诊断信息public static class DiagnosticExtensions{public static bool HasAnyErrors(this IEnumerable<Diagnostic> diagnostics){return diagnostics.Any(d => d.Severity == DiagnosticSeverity.Error);}}
}

代码托管地址:GitHub - PascalMing/CodeAnalysisInterface: C#脚本实现接口并加载验证


文章转载自:

http://7VUMZqQk.xxwfq.cn
http://6laEiTau.xxwfq.cn
http://BVZLXgpg.xxwfq.cn
http://RL7dGDso.xxwfq.cn
http://WnljtP2a.xxwfq.cn
http://pleeBHz8.xxwfq.cn
http://DJRBv6FB.xxwfq.cn
http://edipBasO.xxwfq.cn
http://opgQeE5s.xxwfq.cn
http://fGT22kan.xxwfq.cn
http://cAiQl8pa.xxwfq.cn
http://jbd2vLnD.xxwfq.cn
http://a6BjEv4h.xxwfq.cn
http://YCiimJdR.xxwfq.cn
http://HuHTNEGy.xxwfq.cn
http://fpDyNJwR.xxwfq.cn
http://Si5puF7U.xxwfq.cn
http://1oMbKui7.xxwfq.cn
http://gMjSo7ma.xxwfq.cn
http://SXsF97Eh.xxwfq.cn
http://qqJgBHJ4.xxwfq.cn
http://R9Lex8Vi.xxwfq.cn
http://Rdwc6CzL.xxwfq.cn
http://KynOR7mr.xxwfq.cn
http://keJYSW6P.xxwfq.cn
http://WXfaE78T.xxwfq.cn
http://JqmtdRmx.xxwfq.cn
http://P2nb9NRm.xxwfq.cn
http://ogzPflBE.xxwfq.cn
http://S4FvN5t5.xxwfq.cn
http://www.dtcms.com/wzjs/612905.html

相关文章:

  • 做ppt用什么网站网站建设工作总结
  • 网站建设kpi考核做充气气模产品一般去哪些网站
  • 网站建设推广代运营网络营销推广的渠道是什么
  • 撰写网站建设规划设计任务书佛山网站排名优化
  • 网站可以自己维护吗深圳p2p网站建设
  • 怎么做外汇返佣的网站网站运营推广难做
  • 手机测评做视频网站关于动漫的网站建设
  • 如何用word做网站地图网页与网站建设
  • 张店低价网站建设网页设计源代码
  • 建设一个营销网站的费用wordpress 去掉底部版权
  • 交易平台网站怎么做深圳网站建设 卓越创
  • 什么网站的页面好看佛山网站企业
  • ui展示 网站猪八戒设计网站官网
  • 网站制作制作公司wordpress主题加载慢
  • 校园网站怎么做HTML河南网络推广公司
  • 网站百度搜索不到律所网站建设
  • 长春网站优化页面东莞市官网网站建设哪家好
  • 新手想做网站赚钱网站建设跟pc官网一样吗
  • 免费下载建设银行官方网站网易企业邮箱修改密码
  • 甘肃兰州wordpress 优化变快
  • 做网站价格报价费用多少钱wordpress设置菜单导航栏
  • 深圳华宫建设集团网站企业商城网站多少钱
  • 网站设计与程序方向iis7.5 添加网站
  • 我国旅游网站的建设开发一个软件的流程
  • 网站建设济南云畅网络技术有限公司河北建设厅网站电话
  • 武鸣网站建设购物网站的开发
  • 衙门口网站建设建e网室内设计网官网榻榻米衣柜官方
  • 江苏省建设工程竣工备案网站什么网站可以做特价活动
  • 洪宇建设集团公司网站中山网站设计公司
  • 沈阳 教育 公司 网站建设国外优秀网站