我正在寻找一种方法来获取具有类型检查的对象属性名称,以便在重构后捕获可能的回归.
这是一个例子:我必须将属性名称作为字符串传递的组件,如果我将尝试更改模型中的属性名称,它将被破坏.
interface User {
name: string;
email: string;
}
class View extends React.Component<any, User> {
constructor() {
super();
this.state = { name: "name", email: "email" };
}
private onChange = (e: React.FormEvent) => {
let target = e.target as HTMLInputElement;
this.state[target.id] = target.value;
this.setState(this.state);
}
public render() {
return (
<form>
<input
id={"name"}
value={this.state.name}
onChange={this.onChange}/>
<input
id={"email"}
value={this.state.email}
onChange={this.onChange}/>
<input type="submit" value="Send" />
</form>
);
}
}
Run Code Online (Sandbox Code Playgroud)
如果有任何好的解决方案来解决这个问题我会很感激.
Typescript引入了对JSX语法的支持.所以我的表达式与传统的*.ts文件非常相似,但没有*.tsx文件:
const f = <T1>(arg1: T1) => <T2>(arg2: T2) => {
return { arg1, arg2 };
}
Run Code Online (Sandbox Code Playgroud)
我想知道有没有办法让它在*.tsx文件中运行?
我使用支持Promise规范的Q库.但我也尝试使用不久前在Chrome中实现的Promise类(实验性的).
Q中的延迟函数可用于创建未履行的承诺,可以在将来解决或拒绝.
我使用Chrome中提供的原生Promise实现了相同的功能.这是一个例子:
var defer = function() {
var result = {};
result.promise = new Promise(function(resolve, reject) {
result.resolve = function(value) {
resolve(value);
};
result.reject = function(value) {
reject(value);
};
});
return result;
};
var deferred = defer();
deferred.promise.then(function(value) {
alert(value);
});
deferred.resolve(10);
Run Code Online (Sandbox Code Playgroud)
我很好奇这个解决方案中存在任何设计缺陷,例如性能下降或不正确.
C#8.0引入了可为空的引用类型。这是一个具有可空属性的简单类:
public class Foo
{
public String? Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以通过反射检查类属性是否使用可为空的引用类型?
如何在XElement不获取子元素的情况下获得值?
一个例子:
<?xml version="1.0" ?>
<someNode>
someValue
<child>1</child>
<child>2</child>
</someNode>
Run Code Online (Sandbox Code Playgroud)
如果我使用XElement.Value <someNode>获取"somevalue<child>1</child><child>2<child>"字符串,但我想只获得没有"<child>1</child><child>2<child>"子字符串的"somevalue" .
我在命名空间中使用宏时遇到了问题.代码是
#include <iostream>
namespace a
{
#define MESSAGE_A(message) \
std::cout << (message) << std::endl;
}
#define MESSAGE_A(message) \
std::cout << (message) << std::endl;
int main()
{
//works fine
MESSAGE_A("Test");
//invalid
a::MESSAGE_A("Test")
return 0;
}
Run Code Online (Sandbox Code Playgroud)
什么是在宏中使用命名空间对象的正确变体.
在 ASP.NET Web API 项目中,我有一个自定义 json 转换器。它在使用典型 API 控制器方法的场景中工作得非常好。但不知何故,我无法从在标准 Web API 管道之外工作的中间件访问配置的 JsonOptions。
一个简单的中间件来重现问题:
public sealed class TestMiddleware
{
public async Task Invoke(HttpContext httpContext, IOptions<JsonOptions> jsonOptions)
{
// Some logic to check the middleware must be applied
// ...
// Return a response
await httpContext.Response.WriteAsJsonAsync(data, jsonOptions.Value.SerializerOptions);
}
}
Run Code Online (Sandbox Code Playgroud)
以及配置片段:
public void ConfigureServices(IServiceCollection services)
{
services
.AddControllers()
.AddJsonOptions(configure =>
{
configure.JsonSerializerOptions.Converters.Add(new MyCustomConverter());
configure.JsonSerializerOptions.IgnoreNullValues = true;
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseHttpsRedirection();
app.UseMiddleware<TestMiddlewre>();
app.UseRouting();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); …Run Code Online (Sandbox Code Playgroud) 我在下面的这个小代码中遇到了BadImageFormatException错误.我知道以这种方式编写程序并不是一个好习惯,但它似乎是.NET Framework中的一个错误,而不是我的代码.
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var b = new B();
var bb = b.Test();
var bbb = bb.Count();
}
}
class A<T>
{
public virtual IEnumerable<T> Test()
{
yield return default(T);
}
}
class B : A<int>
{
public IEnumerable<int> Test()
{
base.Test();
yield return 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法为什么它不起作用?
有没有办法对jsdoc中带有“+”等特殊符号的属性进行正确的描述?
例子:
/**
* @typedef {Object} TestObject
* @property {string} "id+name"
*/
Run Code Online (Sandbox Code Playgroud)
在这种情况下,“id+name”似乎是无效语法。
以下是原始JSON数据的示例:
{ "Standards": { "1": "1" } }
Run Code Online (Sandbox Code Playgroud)
我想将数据反序列化为:
public class Model
{
public HashSet<String> Standards { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
该Standards字段实际上具有该Dictionary<String, String>类型.不知何故,键和值总是相等的.由于类型不兼容,我正在寻找一种方法来执行此字段的自定义反序列化.
基于JSON.NET库的解决方案是首选.
PS:我无法控制数据序列化过程.
c# ×4
.net ×3
javascript ×2
json ×2
reflection ×2
typescript ×2
c++ ×1
exception ×1
generics ×1
jsdoc ×1
jsdoc3 ×1
json.net ×1
jsx ×1
macros ×1
namespaces ×1
nullable ×1
promise ×1
q ×1
xelement ×1
xml ×1