常用库的使用net

发布于:2025-06-15 ⋅ 阅读:(17) ⋅ 点赞:(0)

using Newtonsoft.Json;

public class MyClass

{

    // 这个属性在序列化时会被忽略

    [JsonIgnore]

    public string HiddenProperty { get; set; }

    // 这个属性正常序列化

    public string VisibleProperty { get; set; }

    // 如果需要在反序列化时设置 HiddenProperty 的值,

    // 可以通过一个私有属性来接收 JSON 中的值

    [JsonProperty("HiddenProperty")]

    private string HiddenPropertyForDeserialization

    {

        set => HiddenProperty = value;

    }

}

// 示例用法

var obj = new MyClass

{

    HiddenProperty = "This will be ignored during serialization",

    VisibleProperty = "This will be serialized"

};

// 序列化

string json = JsonConvert.SerializeObject(obj);

Console.WriteLine("Serialized JSON: " + json); // 输出: {"VisibleProperty":"This will be serialized"}

// 反序列化

var deserializedObj = JsonConvert.DeserializeObject<MyClass>("{\"HiddenProperty\":\"This will be deserialized\",\"VisibleProperty\":\"Another value\"}");

Console.WriteLine("HiddenProperty: " + deserializedObj.HiddenProperty); // 输出: This will be deserialized

Console.WriteLine("VisibleProperty: " + deserializedObj.VisibleProperty); // 输出: Another value



bogus 

[Fact]

public async Task BatchAddStaffAsync_WhenCalled_ShouldAddStaffToDatabase()

{

    // Arrange

    var staffs = new Faker<Staff>()

        .RuleFor(u => u.Name, f => f.Person.FullName)

        .RuleFor(u => u.Email, f => f.Person.Email)

        .RuleFor(u => u.Age, f => f.Random.Number(18, 60))

        .RuleFor(u => u.Addresses, f => f.MakeLazy(f.Random.Number(1, 3), () => f.Address.FullAddress()))

        .RuleFor(u => u.Created, f => f.Date.PastOffset())

        .Generate(500);

    // Act

    await _staffRepository.BatchAddStaffAsync(staffs, CancellationToken.None);

    // Assert

    var retrievedStaffs = await _staffRepository.GetAllStaffAsync(CancellationToken.None);

    Assert.NotNull(retrievedStaffs); // 确保 Staff 已成功添加到数据库

    Assert.Equal(500, retrievedStaffs.Count); // 确保正确数量的 Staff 已添加到数据库

    Assert.True(staffs.All(x => retrievedStaffs.Any(_ => x.Id == _.Id)));

}



extended.wpf.toolkit

var pg=new propertygrid()

pg.selectedobject=employee

侧边栏

[Browsable(False)]

隐藏类的某些属性

[Category("Name")]

分类  侧边栏分类一样的

有表单提交功能

✅ 优先使用属性

  • 需要控制访问权限(如只读 { get; })。

  • 需要数据验证(如 set 里检查 value 是否合法)。

  • 需要计算值(如 FullName 由 FirstName + LastName 组成)。

  • 需要兼容数据绑定(如 WPF、ASP.NET MVC)。

❌ 可以使用字段

  • 仅限类内部使用(private 字段)。

  • 性能敏感场景(属性有轻微开销,但通常可忽略)。


网站公告

今日签到

点亮在社区的每一天
去签到