C#修改属性的访问性

Type.GetProperty 方法

获取当前 Type 的特定属性。

参数

name
String

包含要获取的属性名的字符串。

bindingAttr
BindingFlags

枚举值的按位组合,这些值指定如何进行搜索。

或 若为 Default,则返回 null

返回

PropertyInfo

表示符合指定需求的属性的对象(如果找到的话);否则为 null

示例

下面的示例检索用户定义的类的类型,检索该类的属性,并根据指定的绑定约束显示属性名称。

using System;
using System.Reflection;
class MyClass
{
    private int myProperty;
    // Declare MyProperty.
    public int MyProperty
    {
        get
        {
            return myProperty;
        }
        set
        {
            myProperty=value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        try
        {
            // Get Type object of MyClass.
            Type myType=typeof(MyClass);
            // Get the PropertyInfo by passing the property name and specifying the BindingFlags.
            PropertyInfo myPropInfo = myType.GetProperty("MyProperty", BindingFlags.Public | BindingFlags.Instance);
            // Display Name propety to console.
            Console.WriteLine("{0} is a property of MyClass.", myPropInfo.Name);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("MyProperty does not exist in MyClass." +e.Message);
        }
    }
}

需要用PropertyInfo.SetValue 方法

设置指定对象的属性值方法来修改属性的可见性

 NameValueCollection paramsCollection = context.Request.Form;
                var propInfo = paramsCollection.GetType().GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
                propInfo.SetValue(paramsCollection, false, new object[] { });
                System.Collections.Specialized.NameObjectCollectionBase.KeysCollection keys = paramsCollection.Keys;

SetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo)

异常

ArgumentException

index 数组不包含所需的参数类型。

或 找不到该属性的 set 取值函数。

value 无法转换为 PropertyType 的类型。

TargetException

该对象与目标类型不匹配,或者某属性是实例属性但 objnull

TargetParameterCountException

index 中的参数数量与索引属性采用的参数数量不匹配。

MethodAccessException

试图非法访问类中的私有或受保护方法。

TargetInvocationException

设置属性值时出错。 例如,为一个索引属性指定的索引值超出范围。 InnerException 属性指示出错的原因。

原文地址:https://www.cnblogs.com/Tpf386/p/12112681.html

时间: 2024-10-18 11:50:27

C#修改属性的访问性的相关文章

通过反射 修改访问和修改属性的值 Day25

package com.sxt.field; /* * 通过反射拿到属性值 * 修改public属性值 * 修改private属性值 * 缺点:可读性差:代码复杂 * 优点:灵活:可以访问修改private属性值 * 以后多运用setXxx getXxx 修改属性的值 */ import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class TestField { public static void m

2017-9-20C#笔记(类,访问修饰符以及访问性,静态成员和实例成员,字段,Main方法,常量,对象的创建,类的属性)

软件开发的两种主要的方式为面向对象和面向过程,面向过程的焦点主要放在指令的组合和优化上,面向对象的焦点从指令转移到组织程序的数据和功能上. 类 程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,称之为类.类作为一个有机的不可分割的整体,对外隐藏具体实现细节,从而实现可重用和易维护等特性,同时还提供了继承功能,支持子类获得父类特征. 类是一个能存储数据并执行代码的数据结构,是逻辑相关的数据和函数的封装,通常代表真实世界中的或概念上的事物. 类包括以下内容: (1) 数据成员:数据成员用来

【速记速学】Python类的定义,属性,方法,访问性!

前言: Python 随着人工智能,机器学习,深度学习,AI 的发展,迅速成为宠儿. 今天,花 5 分钟时间,解读下Python中的类,定义,使用等. 如何定义自己的类呢? 01 类(对象) class dog(object)以上定义了一个dog对象,它继承于根类object. 02 类的属性 def init(self, name, dtype):self.name = nameself.dtype = dtype以上定义了dog对象的两个属性:name, dtype,通过init,这个系统函

第13条:使类和成员的可访问性最小化

区别设计良好的模块和设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.设计良好的模块会隐藏所有的实现细节,把它的API于它的实现清晰地隔离开来.然后,模块之间通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况,这个概念称为信息隐藏或封装.使类和成员的可访问性最小化可以有效的解除系统中各个模块的耦合度.实现每个模块的独立开发.使得系统更加的可维护,更加的健壮.对于顶层的(非嵌套的)类和接口,只有两种可能的访问级别,包级私有的和公有的

web标准的可用性和可访问性

在Web前端开发界,有三个词经常被提及:可用性(Usability).可访问性(Accessibility)和可维护性(Maintainability). 可用性指的是:产品是否容易上手,用户能否完成任务,效率如何,以及这过程中用户的主观感受可好,是从用户的角度来看产品的质量.可用性好意味着产品质量高,是企业的核心竞争力. 可维护性一般包含两个层次,一是当系统出现问题时,快速定位并解决问题的成本,成本低则可维护性好.二是代码是否容易被人理解,是否容易修改和增强功能.可维护性和可复用性.可扩展性等

C++入门经典-类成员的可访问性,继承后的可访问性

1:关键字public.private.protected说明类成员是共有的.私有的,还是保护的.这3个关键字将类划分为3个区域,在public区域的类成员可以在类作用域外被访问,而private区域和protected区域只能在类作用域内被访问. 2:这3种类成员的属性如下: public属性的成员对外可见,对内可见. private属性的成员对外不可见,对内可见. protected属性的成员对外不可见,对内可见,对派生类可见. 3:继承后可访问性.继承方式有public.private.p

使用ARIA角色增强可访问性

ARIA角色,关系,状态和属性可用于WEB应用定义出能够被屏幕阅读器这样的辅助技术理解的工作方式. 因为学习到了这个技术,所以好不容易搜索到类似的信息加以收藏.以下内容转载自张鑫旭学长的博客:http://www.zhangxinxu.com/wordpress/2012/03/wai-aria-%E6%97%A0%E9%9A%9C%E7%A2%8D%E9%98%85%E8%AF%BB/ 一.你至少应该知道ARIA是什么东西! WAI-ARIA指无障碍网页应用.主要针对的是视觉缺陷,失聪,行动不

C#箴言之用属性来访问类的私有成员

在程序中,难免要访问某个对象的私有成员.那么以前实现这类功能的方法有两种,第一种方法最简单,就是把成员访问符从“private”改为“public”即可:而另一个就是提供公有的成员访问函数来进行访问.那么现在用C#编写程序,就不再需要采用前面所说的两种方法了,而直接使用属性来完成. 首先来看看三种方法的如何实现以及调用的,这里用一个例子来说明,即访问“EmployeeInfo”类的私有成员strName,具体如下表格所示. 那么这三种方法有什么区别呢,用如下的表格,可以更好的说明三者的区别. 因

Effective Java 第三版——15. 使类和成员的可访问性最小化

Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 类和接口是Java编程语言的核心.它们是抽象的基本单位.该语言提供了许多强大的元素,可以使用它们来设计类和接口.本章包含指导原则,帮助你充分利用这些元素,使你的类和接口是可