当前位置: 首页 > news >正文

C#接口的setter或getter的访问性限制

有时候只想对外提供getter,但是属性的赋值又必须是setter,此时,可以限制setter的访问性。例如,假设有一个自定义字典(MyDict)属性,该属性我只希望外部能够访问,但是设置必须在内部,则可提供如下声明

namespace LibA{public interface ITranslation{MyDict Dict{get;internal set;}}
}

如果在LibB中访问,则

public class MyTranslation:ITranslation{private MyDict _dict = null;public MyDict Dict{get{return _dict;}set{_dict = value;}}
}public class Main{public void do(){MyTranslation translation = new MyTranslation();var count = translation.Dict.Count;//可访问translation.Dict = new MyDict();//非法}
}

用途。如果我用反射方式在LibA下动态创建Lib的MyTranslation对象,则可使用setter

Assembly assembly = Assembly.LoadFrom(Environment.CurrentDirectory + "\\" + filename);
ITranslation? translation = assembly.CreateInstance(translation_name, true, BindingFlags.Default, null, null, null, activationAttributes: null) as ITranslation;if (translation != null)
{translation.Dict = new MyDict();
}

相关文章:

  • 论文阅读--Logical quantum processor based on reconfigurable atom arrays
  • Model 速通系列(一)nanoGPT
  • 智能开发工具PhpStorm v2025.1——增强AI辅助编码功能
  • uniapp打包H5,输入网址空白情况
  • 设计模式的原理及深入解析
  • Cursor日常配置指南
  • 【C++进阶篇】AVL树的实现(赋源码)
  • 元注解(Meta-Annotations)详解
  • 双条件拆分工作表,一键生成独立工作簿-Excel易用宝
  • Python将Excel单元格某一范围生成—截图(进阶版—带样式+批量+多级表头)
  • reserve学习笔记(花指令)
  • W3电力线载波通信技术
  • 项目删除了,为什么vscode中的git还是存在未提交记录,应该怎么删除掉
  • 系统安全应用
  • 系统安全及应用深度笔记
  • Android13 以太网(YT8531)
  • MetaERP:开启企业数字化管理新时代
  • 2025年渗透测试面试题总结-各厂商二面试题01(题目+回答)
  • 智能呼叫中心系统的功能
  • 设计模式-面试题
  • 张宇祥已任上海闵行区委常委、副区长
  • 《中华人民共和国经济史(1949—1978年)》教材出版发行
  • “当代阿炳”甘柏林逝世,创办了国内第一所残疾人高等学府
  • AI快速迭代带来知识焦虑,褚君浩院士提出“四维能力模型”
  • 陶石不语,玉见文明:临平玉架山考古博物馆明日开馆
  • 马上评|重病老人取款身亡,如何避免类似悲剧?