小编Ste*_*fan的帖子

动态检索 json 元素 .NET 6

我想从 json 字符串中检索单个值。

以前我Newtonsoft这样使用:

var jsonString = @"{ ""MyProp"" : 5 }";
dynamic obj = Newtonsoft.Json.Linq.JObject.Parse(jsonString);
        
Console.WriteLine(obj["MyProp"].ToString());

Run Code Online (Sandbox Code Playgroud)

但我似乎无法让它在 .NET 6 中工作:

到目前为止我已经尝试过:

var jsonString = @"{ ""MyProp"" : 5 }";
dynamic obj = await System.Text.Json.JsonSerializer.Deserialize<dynamic>(jsonString);
        
Console.WriteLine(obj.MyProp.ToString());
Run Code Online (Sandbox Code Playgroud)

这会导致此错误:

未处理的异常。Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:“System.Text.Json.JsonElement.this[int]”的最佳重载方法匹配有一些无效参数

.net c# json .net-6.0

5
推荐指数
1
解决办法
3245
查看次数

什么时候应该使用 &lt;&gt; (或 &lt;,&gt;)?

目前我在通用类型方面有点挣扎。

在阅读相关内容时,我有时会遇到ISomeType<>

例如:

Type generic = typeof(Dictionary<,>);
Run Code Online (Sandbox Code Playgroud)

https://msdn.microsoft.com/en-us/library/system.type.makegenerictype%28v=vs.110%29.aspx

我真的找不到任何关于空<>方法的文档。

那么:我什么时候应该使用<>or <,>

更新

正如 @dcastro 所说,它被称为开放泛型,更多信息可以在这里找到:泛型 - 开放和封闭构造类型

更新2

至于闭包参数,这个问题是关于语法的含义的。

c#

4
推荐指数
1
解决办法
382
查看次数

H1标签前后的额外空间

即使在重新设置边距和填充之后,h1标签在其内容之前和之后仍然具有神秘的不需要的间隙

看代码笔

添加

 line-height:0.7em;
Run Code Online (Sandbox Code Playgroud)

但是,规则大致可以解决问题

  1. 它看起来不干净
  2. 还有很少的不需要的像素
  3. 不确定这不会导致不同字体大小或单位的问题.

是否有一个干净和通用的解决方案,可能使用sass/less mixin与数学运算?

HTML:

<h1>Some text</h1> 
Run Code Online (Sandbox Code Playgroud)

CSS

* { margin:0;padding:0; }
h1 { font-size:25em; } 
Run Code Online (Sandbox Code Playgroud)

html css

4
推荐指数
2
解决办法
7638
查看次数

如何从同一项目中的另一个 Api 控制器调用 Api 控制器

我有一个对象“ApplicantDetail”,其中包含 ApplicantController 中的对象列表,我想将发布请求发送到 Personaldetails Api On 以保存到数据库并获取响应

ApplicantController 上的 API

    // POST: api/ApplicantDetail
    [HttpPost]
    [Route("~/api/ApplicantDetail")]
    public IActionResult Post([FromBody] Personaldetail ApplicantDetail)
    {

        Personaldetail personaldetail = new Personaldetail
        {
            Name = ApplicantDetail.Name,
            Cnic = ApplicantDetail.Cnic,
            Phone = ApplicantDetail.Phone
        };

        List<Address> addresses = new List<Address>();
        List<Employee> employees = new List<Employee>();
        List<Bank> banks = new List<Bank>();

        addresses.AddRange(ApplicantDetail.Address);
        employees.AddRange(ApplicantDetail.Employee);
        banks.AddRange(ApplicantDetail.Bank);

        var response = *//How to Call Personaldetail Post APi of PersonaldetailController Controller From Here and Get 
          response back//*

        return null;
    }
Run Code Online (Sandbox Code Playgroud)

个人详细信息控制器上的 API

    // POST: …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-core-mvc

4
推荐指数
1
解决办法
1万
查看次数

在“构建”期间生成文件,c#,Visual Studio

如何使用 C# 在 Visual Studio 中的“构建”过程中生成文件?

我想创建一个.txt文件并在其中添加一些文本。当我按“构建”时,应该会直接创建该文件并将其保存在“发布”或“调试”文件夹所在的位置。

c# visual-studio

4
推荐指数
1
解决办法
776
查看次数

如何使用PLINQ初始化大数组并行?

我正在尝试使用PLINQ初始化一个简单(但很大)的数组:

void Test(int width, int height)
{
    var foo = new Foo[width * height];
    foo.AsParallel().ForAll(c => new Foo());
}
Run Code Online (Sandbox Code Playgroud)

但是这将给我留下一个宽度为x height null(未初始化)元素的数组.

当然这必须是可能的,因为这个操作可能只是瘫痪(?).

使用PLINQ执行初始化的正确语法是什么?

c# parallel-processing plinq

3
推荐指数
1
解决办法
233
查看次数

如何在.net Core 2.2中实现JWT令牌

我已经为此奋斗了几个小时,似乎无法追踪为什么我对[Authorize]启用的端点的所有呼叫均因401而失败。

在我的.Net Core 2.2 Web API项目中,在Startup.cs中,我设置了身份验证:

public void ConfigureServices(IServiceCollection services)
        {
            var jwtSettings = new JwtSettings();
            Configuration.Bind(nameof(jwtSettings), jwtSettings);
            services.AddSingleton(jwtSettings);

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            // Add the JWT Bearer token configuration
            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =>
            {
                x.SaveToken = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("craigcraigcraigcraigcraigcraig")),//jwtSettings.Secret)),
                    ValidateIssuer = false,
                    ValidateAudience = false,
                    RequireExpirationTime = false,
                    ValidateLifetime = true
                };
            });

            services.AddSwaggerGen(x =>
            {
                x.SwaggerDoc("v1", new Info …
Run Code Online (Sandbox Code Playgroud)

c# jwt

3
推荐指数
1
解决办法
190
查看次数

C# 简化 null 检查条件

如何简化空值检查

public class MyEmployee
{
    public string FirstName;
    public string LastName;
    public string Age;
    public string Phone;
    public string Gender;
}
Run Code Online (Sandbox Code Playgroud)

我已经实现了以下空条件检查

public async Task<bool> ValidateClient(MyEmployee Client)
{
    **if(Client.FirstName == null ||Client.LastName==null ||Client.Age== null ||Client.Gender ==null||Client.Phone==null)**
    {
      throw new Argumentexception("Employee details to be provided")
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 null 检查条件验证 Employee 类的所有属性,这可以在 C# 中简化吗?

c# asp.net-core

3
推荐指数
1
解决办法
1138
查看次数

如何在asp.net-core-webapi中创建路由?

我正在尝试在我的.net核心web api中实现基本路由.

我有一个像这样的控制器:

[Route("api/[controller]")]
public class FooController : Controller
{
    //out of the box
    [HttpGet("[action]")] //get the list
    public IEnumerable<Foo> Get()
    {
      //omitted
    }

    //added: request detail request///
    [HttpGet("[action]/{fooid}")]
    public Foo Get(string fooid)
    {
      //omitted
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图使以下路线工作:

一个细节:

http://localhost:2724/api/Product/Get?fooid=myfoo1
Run Code Online (Sandbox Code Playgroud)

列表的一般内容:

http://localhost:2724/api/Product/Get
Run Code Online (Sandbox Code Playgroud)

问题是,?fooid=最终在IEnumerable版本的调用,我似乎无法正确.


我尝试了各种语法变体来克服这个问题,例如:[HttpGet("{fooid}")]但这似乎并没有帮助.

我知道我可以重命名这个方法,但我这样做是为了练习.

我也知道要求提供文件是不行的,但欢迎任何有关此事的帮助.

我还尝试添加一条路线:

app.UseMvc(routes =>
   {
       routes.MapRoute( //default
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");

        routes.MapRoute(
            name: "fooid",
            template: "{controller=Home}/{action=Index}/{fooid?}");

        routes.MapSpaFallbackRoute(
            name: "spa-fallback",
            defaults: new { controller = "Home", action = "Index" }); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core-webapi

2
推荐指数
1
解决办法
567
查看次数

2
推荐指数
1
解决办法
2366
查看次数