在C# 中使用反射调用internal的属性
有些类型的属性的Set方法被标注为了internal, 或private, 我们外部无法对其进行调用, 这时可以使用反射的方法调用到它.
举例如下:
使用反射的方法代码
public void test() { Assembly asm = Assembly.LoadFile(@"C:\ISAPI\MyPublishing.dll"); Type publishingType = asm.GetType("MyPublishingNameSpace.PublishingType"); ConstructorInfo publishingTypeConstructor = publishingType.GetConstructor(Type.EmptyTypes); Object oPubClass = publishingTypeConstructor.Invoke(new Object[] { }); foreach (PropertyInfo rInfo in publishingType.GetProperties()) { if (rInfo.Name == "PropertyName") { if (rInfo.CanWrite) { rInfo.SetValue(oPubClass, "NewPropertyValue", null); } break; } } MyPublishingNameSpace.PublishingType ptObj = (MyPublishingNameSpace.PublishingType)oPubClass; //Save your reflection work. ptObj.Searilize(); }
被反射的类型的源码
namespace MyPublishingNameSpace { public class PublishingType { private string _property1 = string.Empty; public PublishingType() { } public string PropertyName { get { return _property1;} internal set { _property1 = value;} } public void Searilize() { //Save object. } } }
参考资料:
Using Reflection to Get and Set values of Properties
http://geekswithblogs.net/shahed/archive/2006/11/19/97548.aspx
分类:
.NET and C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律