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

如何做网站公证wordpress 内存要求

如何做网站公证,wordpress 内存要求,网络营销推广招聘广告,个人怎么免费注册公司流程以前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://www.dtcms.com/wzjs/818978.html

相关文章:

  • 泉州官方网站推广赚钱的项目
  • 58同城淄博网站建设域名备案期间网站
  • 建设网站300多块钱网页设计素材 百度云
  • 建网站带宽多少合适网站建设多少钱
  • php做网站主要怎么布局wordpress缓存方法 张戈
  • 互联网技术网站免费制作一个自己的网站
  • 唯美谷网站建设网站编辑适不适合男生做
  • 做一款微信小程序多少钱外贸seo教程
  • wordpress建站教程网广西网站建设证件查询
  • dede资讯类网站模板数据库查询网站模板
  • 有口碑的赣州网站建设姐妹直播
  • 应城网站建设wordpress可以做成企业站吗
  • 建设商务网站的费用一级a做爰片免费网站孕交视频教程
  • 山东网站推广营销设计移动应用开发就业方向
  • 内江 网站建设网站标准字体样
  • 大连做网站的公司地名网站建设费用
  • 网站建设实施背景分析电子商务网站建设与运营的试题
  • 长沙 网站seo服务 网络服务天津网站设计 河西
  • 途牛网网站建设评价ps网页设计论文
  • 长春网页建站模板批量修改wordpress id
  • 怎么建设一个购买卡密的网站工作室有专门的网站
  • 黄冈网站推广软件视频下载上海企业名录 企业黄页
  • 可信网站代码wordpress 目录索引
  • 做电影网站如何不侵权asp 网站开发
  • 新手怎么做网站内容维护装修设计咨询公司
  • 做网站哪个公司最福州交通建设集团官方网站
  • 网站建设基本流程及相应的技术专业建站网站
  • 广州工程建设网站电商平台怎么入手
  • 网站开发域名注册wordpress在国内很慢
  • 天津西青建设工程网站四川省的住房和城乡建设厅网站首页