返回顶部
首页 > 资讯 > 精选 >C#中怎么访问私有成员
  • 828
分享到

C#中怎么访问私有成员

2023-06-17 15:06:25 828人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关C#中怎么访问私有成员,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先访问一个类的私有成员不是什么好做法。大家都知道私有成员在外部是不能被访问的。一个类中会存在很多私有

这期内容当中小编将会给大家带来有关C#中怎么访问私有成员,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

首先访问一个类的私有成员不是什么好做法。大家都知道私有成员在外部是不能被访问的。一个类中会存在很多私有成员:如私有字段、私有属性、私有方法。对于私有成员造访,可以套用下面这种非常好的方式去解决。

private string name;  public string Name  {      get     {          return name;      }      set     {          name = value;      }  }

但是有时候,源代码是别人的,只提供给你dll。或者你去维护别人的代码,源代码却有丢失。这样的情况或许你想知道私有成员的值,甚至去想直接调用类里面的私有方法。那怎么办呢?在.net中访问私有成员不是很难,这篇文章提供几个简单的方法让你如愿以偿。

为了让代码用起来优雅,使用扩展方法去实现。

得到私有字段的值:

public static T GetPrivateField<T>(this object instance, string fieldname)  {      BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;      Type type = instance.GetType();      FieldInfo field = type.GetField(fieldname, flag);      return (T)field.GetValue(instance);  }

得到私有属性的值:

public static T GetPrivateProperty<T>(this object instance, string propertyname)  {      BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;      Type type = instance.GetType();      PropertyInfo field = type.GetProperty(propertyname, flag);      return (T)field.GetValue(instance, null);  }

设置私有成员的值:

public static void SetPrivateField(this objectinstance, stringfieldname, objectvalue)   {       BindingFlagsflag = BindingFlags.Instance | BindingFlags.NonPublic;       Typetype = instance.GetType();       FieldInfofield = type.GetField(fieldname, flag);       field.SetValue(instance, value);   }

设置私有属性的值:

public static void SetPrivateProperty(this objectinstance, stringpropertyname, objectvalue)   {       BindingFlagsflag = BindingFlags.Instance | BindingFlags.NonPublic;       Typetype = instance.GetType();       PropertyInfofield = type.GetProperty(propertyname, flag);       field.SetValue(instance, value, null);   }

调用私有方法:

public static T CallPrivateMethod<T>(this object instance, string name, params object[] param)  {      BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;      Type type = instance.GetType();      MethodInfo method = type.GetMethod(name, flag);      return (T)method.Invoke(instance, param);  }

测试

下面我们使用一个测试类,进行测试。新建一个类库项目,测试的类代码如下:

public class TestClass  {       public TestClass()      {          privatefield1 = 1;          privatefield2 = 99;          PrivateFieldA = "Lo";          PrivateFieldB = "ve";      }       private int privatefield1;      private int privatefield2;           private string PrivateFieldA      {          get;          set;      }      private string PrivateFieldB      {          get;          set;      }        private int Add()      {          return privatefield1 + privatefield2;      }      private string Join()      {          return PrivateFieldA + PrivateFieldB;      }  }

将上面类库的dll引入控制台项目中。使用下面代码去使用这个类的私有成员:

TestClass obj = new TestClass();  System.Console.WriteLine("私有字段");  System.Console.WriteLine(obj.GetPrivateField<int>("privatefield1"));  System.Console.WriteLine(obj.GetPrivateField<int>("privatefield2"));   System.Console.WriteLine("私有属性");  System.Console.WriteLine(obj.GetPrivateProperty<string>("PrivateFieldA"));  System.Console.WriteLine(obj.GetPrivateProperty<string>("PrivateFieldB"));   System.Console.WriteLine("私有方法");  System.Console.WriteLine(obj.CallPrivateMethod<int>("Add",null));  System.Console.WriteLine(obj.CallPrivateMethod<string>("Join", null));   System.Console.WriteLine("修改私有属性");  obj.SetPrivateProperty("PrivateFieldA", "hello");  obj.SetPrivateProperty("PrivateFieldB", "world");  System.Console.WriteLine(obj.CallPrivateMethod<string>("Join", null));  System.Console.Read();

结果如下:

C#中怎么访问私有成员

上述就是小编为大家分享的C#中怎么访问私有成员了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: C#中怎么访问私有成员

本文链接: https://lsjlt.com/news/290094.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中怎么访问私有成员
    这期内容当中小编将会给大家带来有关C#中怎么访问私有成员,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先访问一个类的私有成员不是什么好做法。大家都知道私有成员在外部是不能被访问的。一个类中会存在很多私有...
    99+
    2023-06-17
  • C++ 友元函数如何访问私有成员?
    c++++ 中友元函数访问私有成员的方法有两种:在类内声明友元函数。声明一个类作为友元类,该类中所有的成员函数都可以访问另一个类的私有成员。 C++ 友元函数访问私有成员的方法 友元函...
    99+
    2024-04-15
    友元函数 访问私有成员 c++
  • C#中怎么访问接口成员
    C#中怎么访问接口成员,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#对接口成员访问C#对接口方法的调用和采用索引指示器访问的规则与类中的情况也是相同的。如果...
    99+
    2023-06-17
  • 类的私有成员可在何处访问
    类的私有成员可在本类的成员函数中进行访问。 类的私有成员在派生类中是隐藏的,只能在基类的成员函数中访问。Java中的私有成员使用private来进行修饰。(推荐学习:Java视频教程)私有成员只能在本类中调用,在本类以外一律都看不到。如果要...
    99+
    2017-07-01
    java教程 class 私有成员
  • 如何访问python的私有成员函数
    访问python私有成员函数的方法class Plane():# 私有属性__air_sister = "20个"# 公有绑定方法def fly(self):print("飞机会飞")# 公有普通方法def fly2():print("飞机...
    99+
    2024-04-02
  • 怎么在java中访问类成员
    本篇文章给大家分享的是有关怎么在java中访问类成员,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整...
    99+
    2023-06-14
  • java多态中成员怎么访问
    今天小编给大家分享一下java多态中成员怎么访问的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。说明成员变量,编译看左边,运行...
    99+
    2023-06-30
  • 改变C++中私有变量成员的值
    没有引用的情况: #include #include using namespace std;class Person{public: queueque;public: queue getQueue() { ...
    99+
    2023-09-08
    c++ 算法 开发语言
  • JavaScript 中怎样创建私有成员
    JavaScript 中怎样创建私有成员,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言:面向对象编程语言中的 private 关键字是一个访问修饰符,可用于使属性...
    99+
    2023-06-22
  • JavaScript 中创建私有成员
    目录1.使用闭包2.使用 ES6 类3.使用 ES2020 提案4.使用 WeakMap5.使用 TypeScript前言: 面向对象编程语言中的 private 关键字是一个访问修...
    99+
    2024-04-02
  • Javascript中怎么实现一个私有成员
    这篇文章给大家介绍Javascript中怎么实现一个私有成员,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Javascript中闭包的特性,从而彻底解决了Javascript私有成员的...
    99+
    2024-04-02
  • JavaScript 对象中怎么嵌入私有成员
    JavaScript 对象中怎么嵌入私有成员,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 为何要用私有成员(Private Memb...
    99+
    2024-04-02
  • 怎么在java中访问成员变量
    怎么在java中访问成员变量?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分...
    99+
    2023-06-14
  • C++ 友元函数详解:友元函数在访问私有成员时的限制?
    友元函数可以访问私有成员,但受限制:只能访问当前类(不能访问继承类)的私有成员,且不能直接修改。实战中,友元函数可通过引用或指针访问私有成员,例如访问 student 类的私有成员 na...
    99+
    2024-04-29
    私有成员 友元函数 c++
  • C#怎么访问嵌套的命名空间成员
    这篇文章主要介绍了C#怎么访问嵌套的命名空间成员的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#怎么访问嵌套的命名空间成员文章都会有所收获,下面我们一起来看看吧。嵌套命名空间命名空间可以被嵌套,即您可以在一个...
    99+
    2023-06-17
  • 怎么在java访问多态中的成员
    本篇文章为大家展示了怎么在java访问多态中的成员,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发...
    99+
    2023-06-14
  • Python中类成员有哪些访问限制
    本篇文章为大家展示了Python中类成员有哪些访问限制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pil...
    99+
    2023-06-14
  • php怎么访问私有方法
    这篇文章主要介绍了php怎么访问私有方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php怎么访问私有方法文章都会有所收获,下面我们一起来看看吧。在面向对象编程中,私有方法是一个对象的一部分,并且不能直接从对...
    99+
    2023-07-05
  • JavaScript中私有成员的作用是什么
    这期内容当中小编将会给大家带来有关JavaScript中私有成员的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。class BaseView ...
    99+
    2024-04-02
  • Javascript中的私有成员是什么意思
    这篇文章主要介绍“Javascript中的私有成员是什么意思”,在日常操作中,相信很多人在Javascript中的私有成员是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作