首页 > 编程语言 >asp.net core 使用转外部对象为Controller

asp.net core 使用转外部对象为Controller

时间:2022-10-14 14:56:38浏览次数:50  
标签:core asp typeInfo app 程序 应用程序 Controller public

应用程序部件

  MSDN 说明:应用程序部件是对应用资源的抽象化, 借助应用程序部件,ASP.NET Core 可以发现控制器、视图组件、标记帮助程序、Razor Pages、Razor 编译源等。

核心类:

  ApplicationPart 

 ApplicationPartFactory 从程序集中返回一个或多个ApplicationPart实例的。默认情况下,AspNet 核心构建工具发现引用MVC特性的依赖关系(在依赖关系树中),并将它们作为ApplicationPartAttribute添加到程序集(在构建时)。

   在ASP.NET Core应用程序启动时,它使用applicationpartmanager作为ApplicationParts添加外部程序集。默认情况下,ApplicationPartManager搜索“ApplicationPartAttribute”。

功能提供程序

  应用程序功能提供程序用于检查应用程序部件,并为这些部件提供功能。 以下 ASP.NET Core 功能有内置功能提供程序:

  • ControllerFeatureProvider
  • TagHelperFeatureProvider
  • MetadataReferenceFeatureProvider
  • ViewsFeatureProvider
  • RazorCompiledItemFeatureProvider

如何把外部程序添加为asp.net core 的部件,比如控制器。

  public interface IExtendController
    {
    }
    
    public class AppExtendControlleFeatureProvider : ControllerFeatureProvider
    {
        protected override bool IsController(TypeInfo typeInfo)
        {
            if (typeof(IExtendController).IsAssignableFrom(typeInfo))
            {
                if (!typeInfo.IsInterface &&
                    !typeInfo.IsAbstract &&
                    !typeInfo.IsGenericType &&
                    typeInfo.IsPublic)
                {
                    return true;
                }
            }

            return false;
        }
    }

如上所示,1.定义一个接口.  2.继承控制器功能程序 默认如果实现IExtendController的普通类为MVC的Controller。3.创建一个AP.NET core MVC 项目橙色为修改部分,

ApplicationPartManager的 FeatureProviders 添加我们创建的AppExtendControlleFeatureProvider
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews().ConfigureApplicationPartManager
    (t => t.FeatureProviders.Add(new AppExtendControlleFeatureProvider()));
var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

添加测试的控制器

 public class TestAppCon : IExtendController
    {
        public string GetAmoString()
        {
            return "Just Test  Value";
        }
    }

通过web访问TestAppCon的Action 正确获得了我的的结果。 

标签:core,asp,typeInfo,app,程序,应用程序,Controller,public
From: https://www.cnblogs.com/RunStone/p/16791167.html

相关文章

  • .Net Core Mvc (CRUD)Demo
    目录目录顺手联系了个DEMO控制器Index页面Add页面修改页面最后效果顺手联系了个DEMO控制器usingSystem;usingSystem.Collections.Generic;usingSystem.Dynamic;u......
  • 思科aspire对话
    Welcome.It'sgreattoseeyouWe'vebeensobusyremodelingthatwehaven'thadtimetogetthePCssetup.Woulditbetoomuchtoaskyoutogetthemandset......
  • 【EF Core 6.0 】实体映射table-- 实体特性(Data Annonation 标注)&Fluent Api
    usingSystem.Data.Entity.ModelConfiguration.Configuration;namespaceCodeFirst_FluentAPI_Tutorials{publicclassSchoolContext:DbContext{......
  • 【EF Core 6.0 】开篇
    概览EFCore6.0是建立在ADO.NET框架之上的,它下面仍旧使用了ADO.NET方法和类来执行数据操作。DbContext负责将sqlite翻译成sqlite,跟踪数据状态。EFCore 6.0底层是Mis......
  • CSharp: null object pattern in donet core 3
     ///<summary>///空对象模式nullobjectpattern///geovin,GeovinDueidt///</summary>interfaceIVehicle{voidTrave......
  • ASP构造大数据量的分页SQL语句
     1<%@Language = "VBScript" Codepage = "936"%> 2<% 3'分页sql语句生成代码 4Fun......
  • ASP中查询数据库记录写入XML文件示例
    把下面代码保存为Asp_XML.asp运行即可:<%'By Dicky 2005-03-22 21:52:18 AM QQ:25941 E-mail:[email protected] IsSql = ......
  • ASP中利用OWC控件实现图表功能详解
    在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等。在下面的代码中我详细的给出了饼图,簇状柱型图,折线图的使用方法。OWC的更多......
  • Web漏洞靶场搭建(OWASP Benchmark)
    Benchmark)​渗透测试切记纸上谈兵,学习渗透测试知识的过程中,我们通常需要一个包含漏洞的测试环境来进行训练。而在非授权情况下,对于网站进行渗透测试攻击,是触及法律法规的,所......
  • ASP.NET 6 修改 WebRoot 路径
    问题最近的项目中需要修改WebRoot路径,按照老方法发现报异常,于是Google得知相关方法在ASP.NET6中有所修改。代码ASP.NET5publicstaticIHostBuilderCreateH......