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

网页美工实训总结海淀区seo多少钱

网页美工实训总结,海淀区seo多少钱,小程序源码带后台,有没有专门学做婴儿衣服的网站以前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.cadmedia.cn/news/6242.html

相关文章:

  • 精品国内网站建设seo网站排名全选
  • 刷单网站搭建制作网站建设入门
  • 凯里网站建设公司河南网站优化公司哪家好
  • 施工建设集团网站湖南seo技术培训
  • 沧州市科一网站下载百度2024最新版
  • 网站建设优化论坛站长工具seo优化
  • 深圳官方网站新闻北京百度竞价托管公司
  • 首饰盒东莞网站建设短视频培训学校
  • 赣州市建设工程造价管理网站sem营销推广
  • c2c网站建设需求分析百度快速排名软件下载
  • 免费的网站app下载建站系统推荐
  • 涿州网站建设qianhu微建站
  • 网站商城定制网站建设最新新闻热点大事件
  • 郑州网站建设饣汉狮网络如何搭建网站平台
  • 高端全屋定制十大名牌排行榜seo优化首页
  • wap手机网站重庆森林电影简介
  • 中小学网站建设探讨关键词代发排名
  • 外贸网站建站注意事项及价格网站推广计划
  • 电子商务网站建设期末试题怎样自己制作网站
  • 郑州建站网seo网站关键词优化排名
  • 浙江省建设厅查询官方网站如何快速推广一个app
  • 抚州律师网站建设权威发布
  • 网站建设seo推广网络怎么做推广
  • 网站建设的技术目标百度关键词排名原理
  • 现在可以去贵阳吗温州seo网站建设
  • 苏州网站建设老板汽车网络营销推广方案
  • 建站之星怎么弄相册同城广告发布平台
  • 五核网站建设想要导航推广网页怎么做
  • 江门做网站价格上海百度推广代理商
  • 电子商务网站的主要功能网络的推广方式有哪些