net core 返回值
//指定类下的子类
Type helloType = typeof(ActionResult); List<Type> types = new List<Type>(); foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (var type in assembly.GetTypes()) { if (helloType.IsAssignableFrom(type)) { if (type.IsClass && !type.IsAbstract) { types.Add(type); } } } } for (int i=0;i<types.Count;i++) { sb.AppendLine(types[i].Name); } var ret = sb.ToString();
public FileStreamResult(Stream fileStream, string contentType); public FileContentResult(byte[] fileContents, string contentType); var t = new ContentResult(); t.Content = "0000"; return t;
报错
public class AResult : ActionResult { // Properties public string Content { get; set; } public string ContentType { get; set; } public int? StatusCode { get; set; } public override Task ExecuteResultAsync(ActionContext context) { if (context == null) { throw new ArgumentNullException("context"); } return context.HttpContext.RequestServices.GetRequiredService<IActionResultExecutor<AResult>>().ExecuteAsync(context, this); } //pivotPoint.get_X(); 改为 pivotPoint.x; }
public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); //注册 services.TryAddSingleton<IActionResultExecutor<AResult>>(); }
注册后报错
public class AResult : ActionResult { // Properties public string Content { get; set; } public string ContentType { get; set; } public int? StatusCode { get; set; } public override Task ExecuteResultAsync(ActionContext context) { if (context == null) { throw new ArgumentNullException("context"); } return context.HttpContext.RequestServices.GetRequiredService<IActionResultExecutor<AResult>>().ExecuteAsync(context, this); } } public class AResultExecutor : IActionResultExecutor<AResult> { private const string DefaultContentType = "text/plain; charset=utf-8"; private readonly IHttpResponseStreamWriterFactory _httpResponseStreamWriterFactory; public AResultExecutor(IHttpResponseStreamWriterFactory httpResponseStreamWriterFactory) { _httpResponseStreamWriterFactory = httpResponseStreamWriterFactory; } public async Task ExecuteAsync(ActionContext context, AResult result) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (result == null) { throw new ArgumentNullException(nameof(result)); } var response = context.HttpContext.Response; ResponseContentTypeHelper.ResolveContentTypeAndEncoding( null, response.ContentType, DefaultContentType, out var resolvedContentType, out var resolvedContentTypeEncoding); response.ContentType = resolvedContentType; var defaultContentTypeEncoding = MediaType.GetEncoding(response.ContentType); if (result.Content != null) { string content = result.Content; response.ContentLength = resolvedContentTypeEncoding.GetByteCount(content); using (var textWriter = _httpResponseStreamWriterFactory.CreateWriter(response.Body, resolvedContentTypeEncoding)) { await textWriter.WriteAsync(content); await textWriter.FlushAsync(); } } } }
services.TryAddSingleton<IActionResultExecutor<AResult>, AResultExecutor>();
详细
自定义ActionResult
https://blog.csdn.net/u014690615/article/details/85999853