我想从 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]”的最佳重载方法匹配有一些无效参数
目前我在通用类型方面有点挣扎。
在阅读相关内容时,我有时会遇到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
至于闭包参数,这个问题是关于语法的含义的。
即使在重新设置边距和填充之后,h1标签在其内容之前和之后仍然具有神秘的不需要的间隙
添加
line-height:0.7em;
Run Code Online (Sandbox Code Playgroud)
但是,规则大致可以解决问题
是否有一个干净和通用的解决方案,可能使用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) 我有一个对象“ApplicantDetail”,其中包含 ApplicantController 中的对象列表,我想将发布请求发送到 Personaldetails Api On 以保存到数据库并获取响应
// 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)
// POST: …
Run Code Online (Sandbox Code Playgroud) 如何使用 C# 在 Visual Studio 中的“构建”过程中生成文件?
我想创建一个.txt
文件并在其中添加一些文本。当我按“构建”时,应该会直接创建该文件并将其保存在“发布”或“调试”文件夹所在的位置。
我正在尝试使用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执行初始化的正确语法是什么?
我已经为此奋斗了几个小时,似乎无法追踪为什么我对[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) 如何简化空值检查
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# 中简化吗?
我正在尝试在我的.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) 如何重新配置 RabbitMQ 不使用 %appdata% 作为配置文件?