我的类中有一组私有方法,我需要根据输入值动态调用一个.调用代码和目标方法都在同一个实例中.代码如下所示:
MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType);
dynMethod.Invoke(this, new object[] { methodParams });
Run Code Online (Sandbox Code Playgroud)
在这种情况下,GetMethod()不会返回私有方法.什么BindingFlags我需要提供以GetMethod()使其能找到私有方法?
我有一个双"138630.78380386264",我想将它转换为十进制,但是当我这样做时,我通过铸造或使用Convert.ToDecimal(),我失去精度.
这是怎么回事?decimal和double都可以保存这个数字:

double doub = double.Parse("138630.78380386264");
decimal dec = decimal.Parse("138630.78380386264");
string decs = dec.ToString("F17");
string doubse =DoubleConverter.ToExactString(doub);
string doubs = doub.ToString("F17");
decimal decC = (decimal) doub;
string doudeccs = decC.ToString("F17");
decimal decConv = Convert.ToDecimal(doub);
string doudecs = decConv.ToString("F17");
Run Code Online (Sandbox Code Playgroud)
另外:如何使用ToString()on double打印出与调试器显示的相同的结果?例如138630.78380386264?
我正在BigInteger使用以下命令将 a 序列化为 JSON System.Text.Json:
JsonSerializer.Serialize(new {foo = new BigInteger(ulong.MaxValue) + 1})
Run Code Online (Sandbox Code Playgroud)
这会产生以下输出:
{"foo":{"IsPowerOfTwo":true,"IsZero":false,"IsOne":false,"IsEven":true,"Sign":1}}
Run Code Online (Sandbox Code Playgroud)
如果我添加一个将值转换BigInteger为 a 的转换器ulong,它当然会失败,因为该BigInteger值太大:
var options = new JsonSerializerOptions();
options.Converters.Add(new BigIntegerConverter());
JsonSerializer.Serialize(new {foo = new BigInteger(ulong.MaxValue) + 1}, options);
Run Code Online (Sandbox Code Playgroud)
这是转换器:
public class BigIntegerConverter : JsonConverter<BigInteger>
{
public override BigInteger Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => throw new NotImplementedException();
public override void Write(Utf8JsonWriter writer, BigInteger value, JsonSerializerOptions options) => writer.WriteNumberValue((ulong)value);
}
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
{"foo":18446744073709551616}
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过JsonWriter.WriteRawValueJson.NET 来实现,但我仅限于使用 …
c# biginteger json-serialization jsonconverter system.text.json