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
相关产品推荐
相关产品推荐

