5

基本的なクラス定義が与えられた場合:

using System.Reflection;

public class Car()
{
  public int speed {get;set;}

  public void setSpeed()
  {
       Type type = this.GetType(); 
       PropertyInfo property = type.GetProperty(PropertyName );
       property.SetValue(type, Convert.ToInt32(PropertyValue), null);
  }
}

このコード サンプルは簡略化されており、動的な型変換を使用していません。実際のサンプルでインスタンスにそのプロパティを設定したいだけです。

編集: 上記のコードの PropertyName と PropertyValue も簡略化されています。

前もって感謝します

4

1 に答える 1

9

渡す最初の引数は、設定するプロパティを保持するインスタンスにする必要があります。静的プロパティの場合は、最初の引数に null を渡します。あなたの場合、コードを次のように変更します。

  public void setSpeed()
  {
       Type type = this.GetType(); 
       PropertyInfo property = type.GetProperty(PropertyName );
       property.SetValue(this, Convert.ToInt32(PropertyValue), null);
  }

あなたができる単純な型変換のために

   var value = Convert.ChangeType(PropertyValue,property.PropertyType);
   property.SetValue(this, value, null);
于 2012-10-26T07:45:56.827 に答える