0

カスタム コンポーネントを作成中です。以下のように GetProperty("propertyname").GetValue() で PipleBuffer の値を読み込もうとしています:

    public override void ProcessInput(int inputID, PipelineBuffer buffer)
    {
        while (buffer.NextRow())
        {
            string nk = buffer[1].ToString();
            string nk1 = buffer.GetType().GetProperty("NK").GetValue(buffer, null).ToString();

行 buffer[1].ToString() では正常に動作しますが、次の行ではスローに失敗します:

NullReferenceException : オブジェクト参照がオブジェクトのインスタンスに設定されていません

手がかりをください。

保護レベルにあるため、PipleBuffer のオブジェクト インスタンスを作成できません。

4

1 に答える 1

0

buffer.GetType().GetProperty("NK")null であるか、nullbuffer.GetType().GetProperty("NK").GetValue(buffer, null)です。

コードを次のように変更して確認します。

PropertyInfo prop = buffer.GetType().GetProperty("NK");
if (prop == null)
{
    throw new Exception("prop is null!");
}

object value = prop.GetValue(buffer, null);
if (value == null)
{
    throw new Exception("value is null!");
}

string nk1 = value.ToString();

これは診断目的のみであることに注意してください。これをコードに保持することはお勧めしません。

于 2010-07-12T03:06:25.960 に答える