C#中为FileName属性创建赋值回调以读取文本文件的方法问询
在C#中为属性赋值添加回调逻辑
对于你的需求,最直接的方式是放弃自动属性的简写,手动实现属性的get和set方法,在set块里嵌入文件读取的回调逻辑:
// 私有字段存储文件名的实际值 private string _fileName; // 存储读取到的文件内容,方便后续调用 private string[] _fileLines; public string FileName { get => _fileName; set { // 避免重复赋值时重复执行读取逻辑(可选但推荐) if (_fileName != value) { _fileName = value; // 执行赋值后的回调逻辑 if (!string.IsNullOrEmpty(_fileName)) { // 加入异常捕获,防止文件不存在、权限不足等问题导致崩溃 try { _fileLines = System.IO.File.ReadAllLines(_fileName); // 这里可以添加更多后续处理,比如通知其他逻辑内容已更新 } catch (System.IO.FileNotFoundException) { _fileLines = Array.Empty<string>(); } catch (Exception) { _fileLines = Array.Empty<string>(); } } else { // 赋值为空时清空文件内容 _fileLines = Array.Empty<string>(); } } } }
核心说明
- 自动属性
{get;set;}是编译器帮你自动生成私有字段的简写,手动实现后可以完全控制赋值时的逻辑 set块会在每次给FileName赋值时触发,刚好满足你“赋值即执行回调”的需求- 异常捕获和值判断都是为了让代码更健壮,适合新手调试和避免不必要的错误
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

