首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# GetDeclaredProperty设置值错误SetValue方法没有重载有一个参数

这个问题是由于使用了错误的SetValue方法重载导致的。在C#中,SetValue方法有多个重载,但是没有一个重载只接受一个参数。正确的SetValue方法重载需要提供两个参数:要设置值的对象实例和要设置的值。

以下是正确的使用SetValue方法的示例代码:

代码语言:txt
复制
using System;
using System.Reflection;

public class MyClass
{
    public string MyProperty { get; set; }
}

public class Program
{
    public static void Main()
    {
        MyClass obj = new MyClass();
        
        PropertyInfo propertyInfo = obj.GetType().GetProperty("MyProperty");
        
        if (propertyInfo != null && propertyInfo.CanWrite)
        {
            propertyInfo.SetValue(obj, "Hello World");
        }
        
        Console.WriteLine(obj.MyProperty); // 输出:Hello World
    }
}

在上面的示例中,我们首先获取了"MyProperty"属性的PropertyInfo对象。然后,我们检查该属性是否可写,并使用正确的SetValue方法重载将值"Hello World"设置给该属性。最后,我们输出了属性的值,验证设置是否成功。

对于这个问题,如果你想了解更多关于C#反射和属性操作的知识,可以参考腾讯云的相关产品和文档:

  • 腾讯云产品:云服务器(CVM)
  • 产品介绍链接地址:https://cloud.tencent.com/product/cvm
  • 文档链接地址:https://cloud.tencent.com/document/product/213

请注意,以上提供的腾讯云产品和链接仅作为示例,不代表其他云计算品牌商的推荐或评价。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了

问题 下面是一个很简单的 MarkupExtension,用户设置了什么,就返回什么。拿这么简单的类型只是为了避免额外引入复杂的理解难度。...SetValue(ValueProperty, value); } 这里问题来了,获取和设置附加属性是需要一个依赖对象的,那么我们哪里去找依赖对象呢?直接定义一个新的就好了。...在 Value 的 set 方法中得到的 value 一个 Binding 对象,而不是正常依赖属性中得到的绑定的结果;这意味着我们无法直接使用 Value 的。...哦 SetValue 方法也要换成我们自定义的 SetValue 哦,这样绑定才可以生效 OnValueChanged 就是我们实际的变更通知,这里得到的 oldValue 和 newValue 就是你期望的...于是,绑定就这么在一个普通的类型和一个普通的 CLR 属性中生效了,而且还获得了变更通知。 参考资料 本文没有任何参考资料,所有方法都是我(walterlv)的原创方法,因为真的找不到资料呀!

1.6K20

C#操作注册表全攻略

下面我们就来用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除、键值的创建(设置、修改),读取和删除、判断注册表项是否存在、判断键值是否存在。...RegistryKey key = Registry.LocalMachine; RegistryKey software = key.OpenSubKey("software\\test",true); //注意该方法后面还可以有一个布尔型的参数...key.Close(); 注意,如果该注册表项不存在,这调用这个方法会抛出异常 二:键值的创建(设置、修改),读取和删除 1:创建(设置、修改): 对键值的创建修改等操作主要用到RegistryKey...// 注意:SetValue()还有第三个参数,主要是用于设置键值的类型,如:字符串,二进制,Dword等等~~默认是字符串。...如果你要修改键值,包括创建、设置、删除键值等都要在方法后面加个布尔参数设置为true,表示可写可改;如果仅仅只是读取键值可以不加,此时可写关闭,你不能再往里写(当然,你要加也可以true)!

1.2K31
  • 结合使用 C# 和 Blazor 进行全栈开发

    它会在每个字段下显示错误消息,这些消息会在用户键入内容的同时更新。最后,只有在没有错误的情况下,“注册”按钮才处于启用状态。 ?...是要显示的实际错误消息。通过此设置,可以轻松确定特定字段是否有验证错误,并快速检索错误消息。...是时候添加 GetValue 方法了,它需要使用 fieldname 参数,并使用反射来查找此模型中的字段并返回字段。...然后,OnFieldChanged 处理程序调用 SetValue 方法,以对相应字段执行规则,并在用户键入内容的同时实时更新错误消息。图 8 展示了代码。...它调用 HasErrors 方法,以验证所有规则并返回布尔。若有错误,控制器返回 BadRequest 响应;否则,它返回成功响应。

    6.7K40

    k3cloud开发实例

    分析业务定义重载方法; 这里,我们先简单实现一个Hello World: 点击菜单HelloWorld,弹出一个Hello World对话框。...IDynamicFormModel提供的主要是针对数据进行操作的系列方法,包括:初始化、新增表单数据、复制数据、删除数据、定位当前分录数据行、设置方法。...通常我们在IDE里通过配置实体服务规则实现表单字段的缺省赋值: 但有时需要根据一些参数动态设置时,就需要用插件实现。下面举一个例子,新增单据时根据当前组织获取邮件的缺省,赋值到当前数据包。...,因此该方法设置是整个数据包一起发送到客户端的。...e) { base.OnLoad(e); //设置日期缺省 this.View.Model.SetValue("FStartDate", dateFrom.ToString("yyyy-MM-dd"

    4.1K12

    C# 8.0 的可空引用类型,不止是加个问号哦!你还有很多种不同的可空玩法

    C# 8.0 引入了可空引用类型,你可以通过 ? 为字段、属性、方法参数、返回等添加是否可为 null 的特性。...DisallowNull: 标记一个可空的输入实际上不应该传入 null。 MaybeNull: 标记一个非空的返回实际上可能会返回 null,返回包括输出参数。...DoesNotReturn: 指定一个方法是不可能返回的。 DoesNotReturnIf: 在方法的输入参数上指定一个条件,当这个参数传入了指定的 true/false 时方法不可能返回。...这样,获取此属性的时候会得到非 null 的,而设置的时候却可以设置成 null。...throw new ArgumentNullException(nameof(value), "不允许将这个设置为 null"); } 当你获取这个属性的时候,这个属性可能还没有初始化,于是我们获取到

    1.2K20

    Kotlin委托

    Kotlin中有委托,这个C#中也有,不过对于学Java的童鞋来说,这是什么鬼啊,到底是干什么用的… 在委托模式中,当有两个对象参与处理同一个请求是,接受请求的对象将请求委托给另一个对象来处理。...setValue 的函数,该函数接受以下参数(可以继承 ReadWriteProperty 实现该方法): thisRef —— 同 getValue(), property —— 同 getValue...Hello Hello 可观察属性 Observable 当属性改变的时候运行函数方法。 Delegates.observable() 接受两个参数:初始和修改时处理程序(handler)。...var positiveNumber = Delegates.vetoable(0) { d, old, new -> new >= 0 } NotNull 委托 他会含有一个可空变量并会在我们设置这个属性的时候分配一个真实的...如果这个在被获取之前没有被分配,它就会抛出异常。

    1.5K30

    如何快速编写和调试 Emit 生成 IL 的代码

    之前我写过一篇创建委托以大幅度提高反射调用的性能的方法,不过此方法适用于预先知道方法参数和返回类型的情况。如果我们在编译期不知道类型,那么它就行不通了。(原因?...为了实现动态地设置未知类型未知属性的,我决定写出如下方法: static void SetPropertyValue(object @this, object value) { ((类的类型...方法一个静态方法,传入两个参数——类型的实例和属性的新方法内部为实例中某个属性赋新。...,参数依次为方法名、返回类型、参数类型。...setValue(instance, "test"); } 直接运行,在 setValue 之后我们查看 instance 中 TempProperty 属性的,可以发现已经成功修改了。大功告成!

    1.6K10

    C#中的反射解析及使用.

    1、对C#反射机制的理解 2、概念理解后,必须找到方法去完成,给出管理的主要语法 3、最终给出实用的例子,反射出来dll中的方法 参考: C#反射,MSDN编程指南 反射是一个程序集发现及运行的过程,通过反射可以得到...MethodInfo对象 5 methodInfo.Invoke(obj,null); //参数1类型为object[],代表Hello World方法的对应参数,输入为null代表没有参数 四、反射属性...1.通过 System.Reflection.PropertyInfo 能查找到类里面的属性    常用的方法有GetValue(object,object[]) 获取属性SetValue(object...propertyInfo in listPropertyInfo) 4 Cosole.WriteLine("Property name is "+ propertyInfo.Name); 2.我们也可以通过以下方法设置或者获取一个对象的属性...2.我们也可以通过以下方法设置或者获取一个对象的属性 1 Assembly assembly=Assembly.Load("MyAssembly"); 2 Type type=assembly.GetType

    2K140

    NullReferenceException,就不应该存在!

    它让这么多人印象深刻,是因为它在项目中实在是太常见了,常见到每一个 C#/.NET 入门者必然会遇到。 然而,这个异常本不应该存在!...因为我们尝试去调用某个属性或方法时假设了它不为 null,这意味着它为 null 就是个错误。但是,从异常的调用栈中我们却找不到任何痕迹能够告诉我们是哪里给它设置成了 null(或者是从未赋值过)。...这个方法比较简单,我们猜 _value 为 null 基本不会有问题了,方法复杂一点儿就难猜了。然而真正让 _value 为 null 的罪魁祸首就找不到了,因为它发生在 SetValue 中。...因为 SetValue 中发生了异常后,获取到的调用栈是导致 _value 为 null 的调用栈。 告知了为 null 的参数名称。...所以,为了解决这些困惑,我建议在开发中以如下方式对待我们的 null: 对任何可被外部模块调用的方法参数进行 null 判断,并在参数为 null 时抛出 ArgumentNullException。

    1.1K10

    浅谈C#数组(一)

    在后台使用C#语法,会创建一个派生自抽象基类Array的新类。这样,就可以使用Array类为每个C#数组定义的方法和属性了。   Array类实现的其它属性有LongLength和Rank。...1.创建数组   Array类是一个抽象类,所以不能使用构造函数来创建数组。但除了使用C#语法创建数组实例之外,还可以使用静态方法CreateInstance()创建数组。...CreateInstance()方法的第一个参数是元素的类型,第二个参数定义数组的大小。   可以使用SetValue()方法设置对应元素的,用GetValue()方法读取对应元素的。   ...这个接口只定义了一个方法CompareTo()方法,如果要比较的对象相等,该方法就返回0.如果该实例应排在参数对象的前面,该方法就返回小于i0de。...如果该实例应排在参数对象的后面,该方法就返回大于0的

    95210

    深入浅出话属性

    这种直接把数据暴露给外界的做法很不安全,很容易就把错误写入字段。...原来C#代码中属性编译的结果是两个方法!前面已经说过,再多实例方法也只有一个拷贝,所以CLR属性并不会增加内存的负担。同样也说明,属性仅仅是个语法糖衣(Syntax Sugar)。...作为参数,GetValue是通过DependencyProperty获取对象;SetValue通过DependencyProperty对象存储-----正是这两个方法把DependencyObject...现在使用的这个方法参数最少、最简单的一种重载,下面分析一下这三个参数: 第一个参数为string类型,用这个参数指明哪个CLR属性作为这个依赖属性的包装器,或者说此依赖属性支持的是哪个CLR属性。...(7)由模板之触发器控制的。 (8)由样式之设置设置。 (9)由默认样式设置。默认模式其实就是由主题指定的模式。 (10)由上级元素继承而来的

    92330

    win10 uwp 依赖属性

    UWP 什么时候可以获取继承的依赖属性 依赖属性一般是不在构造函数写获取继承的属性的,因为一般这时拿到的都是没有继承,请看下面的代码 创建一个用户控件 LuenqxuhkRrjbzcf ,在他的构造函数和加载完成事件添加获得...G 的 Padding 为一个,那么在设置绑定之后,这个就会被设置默认。...如果在绑定之前,设置 G 的 Padding 为20 ,那么设置绑定之后, G 的 Padding = 0 如果需要保留这个,可以使用临时变量。 绑定还有另一个问题,一个属性只能做一次绑定。...但是这个方法会出现内存泄露,可以使用 RemoveValueChanged 清除,为了使用清除,需要写一个函数。...($propertyName$Property, value); } 可以直接粘贴进去Resharper的代码 或者导入我的设置,点击下载 如果想要使用的是 C# 7 的特性,可以修改代码片,或者点击下载导入

    83320

    java泛型(一)、泛型的基本介绍和使用

    泛型在java中,是一个十分要的特性,所以要好好的研究下。...您传递给 add() 的将与 get() 返回的的类型相同。 类似地,之所以声明泛型方法,一般是因为您想要在该方法的多个参数之间宣称一个类型约束。...这个时候,就要使用类型限定,对类型变量T设置限定(bound)来做到这一点。 我们知道,所有实现Comparable接口的方法,都会有compareTo方法。...stackoverflow上有个老外说:java 里如果 一个类继承了另外一个带模板参数的类,那么这个模板参数不会被“类型擦除”。而单一的一个类,其泛型参数会被擦除。 首先说明这种假设是错误的。...那么究竟是什么原因,导致了,一个泛型类(含有模板参数的类),没有C#中 GetGenericArguments()类似的getGenericClass()函数呢??

    1.5K10

    【React】406- React Hooks异步操作二三事

    组件中出现 setTimeout 等闭包时,尽量在闭包内部引用 ref 而不是 state,否则容易出现读取到旧的情况。 useState 返回的更新状态方法是异步的,要在下次绘才能获取新。...因此一个简单的办法是标记一下组件有没有被卸载,可以利用 useEffect 的返回。...在 dealClick 中设置计时器时返回依旧写给了这个局部变量(即读和写都是同一个变量),因此在后续卸载时,虽然组件重新运行导致出现一个新的局部变量 timer,但这不影响闭包内老的 timer,所以结果是正确的...flag),但依然没有影响到 timeout 里面的 flag。 解决方法有二。...反之如果的确碰到了设置了新但读取到旧的情况,也可以往这个方向想想,可能就是这个原因所致。

    5.6K20
    领券