You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinForm对话框关闭时返回自定义Period对象的实现及CS0053错误解决咨询

解决Windows Form对话框返回自定义对象的CS0053错误

嘿,我刚看完你的问题,这个CS0053错误其实很好解决——核心问题出在类的访问权限上!

错误原因

你写的Period和Entry类没有加访问修饰符,C#里这种情况下类的默认权限是internal(只能在当前项目内部访问)。但你的NewPeriod窗体里的Period属性是public的,这就导致了一个矛盾:一个公开的属性,它的类型却是只能内部访问的,编译器当然会报错啦!同理,List<Entry>里的Entry类也是internal,所以也会触发同样的错误。

解决方案

只需要把Period和Entry类的访问修饰符改成public就搞定了,这样它们的权限和你的公开属性匹配,编译器就不会再挑刺了。

修改后的Period类

public class Period {
    public List<Entry> Entries { get; set; }
    public DateTime Begin { get; set; }
    public DateTime End { get; set; }
    public string Name { get; set; }
    public decimal ServerInvoiceAmount { get; set; }
    public decimal SplitCostAmount { get; set; }
    public decimal DonationAmount { get; set; }
}

修改后的Entry类

public class Entry {
    // 替换成你实际的字段/属性名
    public string Field1 { get; set; }
    public string Field2 { get; set; }
    public string Field3 { get; set; }
    public string Field4 { get; set; }
    public double Amount { get; set; }
    public DateTime RecordDate { get; set; }
}

验证你的使用方式

修改完之后,你原来的调用代码完全可以正常工作:

var newPeriodForm = new NewPeriod();
var result = newPeriodForm.ShowDialog();
if(result == DialogResult.OK) {
    periods.Add(newPeriodForm.Period);
}

这样你就不用把Period拆成一堆零散的属性返回了,直接返回完整的对象就行,完全符合你的需求~

内容的提问来源于stack exchange,提问作者mr.jogurt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 18:39:10