最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 中屬性PropertyInfo的setvalue用法說明

 更新時(shí)間:2021年01月19日 15:39:07   作者:鋒璠  
這篇文章主要介紹了C# 中屬性PropertyInfo的setvalue用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

下面是關(guān)于setvalue方法的介紹以及錯(cuò)誤簡(jiǎn)介

用索引化屬性的可選索引值設(shè)置指定對(duì)象的該屬性值。

C#

public virtual void SetValue (object obj, object value, object[] index);

參數(shù)

obj Object

將設(shè)置其屬性值的對(duì)象。

value Object

新的屬性值。

index Object[]

索引化屬性的可選索引值。 對(duì)于非索引化屬性,該值應(yīng)為 null。

實(shí)現(xiàn)

SetValue(Object, Object, Object[])

異常

ArgumentException

index 數(shù)組不包含所需的參數(shù)類型。

或 找不到該屬性的 set 取值函數(shù)。

或 - value 無法轉(zhuǎn)換為 PropertyType的類型。

TargetException

在適用于 Windows 應(yīng)用商店應(yīng)用的 .NET 或可移植類庫中,改為捕獲 Exception。

該對(duì)象與目標(biāo)類型不匹配,或者某屬性是實(shí)例屬性但 obj 為 null。

TargetParameterCountException

index 中的參數(shù)數(shù)量與索引屬性采用的參數(shù)數(shù)量不匹配。

MethodAccessException

在適用于 Windows 應(yīng)用商店應(yīng)用的 .NET 或可移植類庫中,改為捕獲基類異常 MemberAccessException。

試圖非法訪問類中的私有或受保護(hù)方法。

TargetInvocationException

設(shè)置屬性值時(shí)出錯(cuò)。 例如,為一個(gè)索引屬性指定的索引值超出范圍。 InnerException 屬性指示出錯(cuò)的原因。

例子

Dictionary<string, string> dic = new Dictionary<string, string>();
  foreach (Control control in this.Controls )//獲取控件中所有值,添加到字典中
  {
  if (control is TextBox ||control is ComboBox ||control is DateTimePicker )
  {
   dic.Add (control.Name, control.Text);
  }
  }
  PropertyInfo[] propertys = incomingnews.GetType().GetProperties();
  foreach (PropertyInfo property in propertys)//運(yùn)用propertyinfo的映射方法,給實(shí)體類incomingnews的所有屬性賦值。
  {
  for (int i = 0; i<dic.Count; i++)
  {
   property.SetValue(incomingnews, dic[property.Name].ToString(), null);
  }
  }

之前有個(gè)小錯(cuò)誤一直弄不出來,后來看了錯(cuò)誤提示“index 數(shù)組不包含所需的參數(shù)類型。

或 找不到該屬性的 set 取值函數(shù)。

或 value 無法轉(zhuǎn)換為 PropertyType的類型?!?/p>

發(fā)現(xiàn)自己想要賦值的實(shí)體類不是實(shí)體的屬性,而是實(shí)體的字段,所以setvalue方法就捕捉不到我想要賦值的這些字段,只需要將這些字段設(shè)置為自動(dòng)屬性即可。

補(bǔ)充:C# Property.SetValue()利用反射給某個(gè)泛型對(duì)象的屬性賦值的問題

問題描述:

在一個(gè)泛型方法中,實(shí)例化一個(gè)泛型對(duì)象后,利用反射獲取該泛型中的所有屬性,再給該對(duì)象的這些屬性賦值,打斷點(diǎn)發(fā)現(xiàn),泛型對(duì)象被實(shí)例化出來了,沒有問題;所要賦值的屬性值也沒有問題,但調(diào)用Property.SetValue()后,泛型對(duì)象中的值就是賦不上。

問題解決:

調(diào)用該泛型方法時(shí),傳入的類型是個(gè)結(jié)構(gòu)體。。這個(gè)方法只支持class,不支持struct。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

最新評(píng)論

安多县| 北流市| 乌恰县| 仙桃市| 周至县| 敖汉旗| 安顺市| 台中市| 水城县| 永康市| 叶城县| 光山县| 吴忠市| 白河县| 绥滨县| 徐闻县| 宜都市| 土默特右旗| 塔城市| 齐齐哈尔市| 湛江市| 那曲县| 木里| 通江县| 彭山县| 公主岭市| 石台县| 陵川县| 淅川县| 乡宁县| 鸡西市| 红桥区| 林西县| 吉隆县| 双柏县| 彭阳县| 兴隆县| 三门峡市| 东丰县| 新巴尔虎左旗| 柳州市|