3

この質問がここに何度も投稿されているのを見てきましたが、私の問題に関連しているため、解決策を理解していないと思います。

この行で例外が発生しています:

return CurrentCompany.ParentCompanyId == null 
    ? (Guid)CurrentCompany.ParentCompanyId 
    : CurrentCompanyID;

コードの詳細は次のとおりです。

/// Return the current company id, unless this is a child company id, 
/// then return the parent company id.
private Guid MainCompanyID
{
    get
    {
        return CurrentCompany.ParentCompanyId == null 
            ? (Guid)CurrentCompany.ParentCompanyId 
            : CurrentCompanyID;
    }
}

必要に応じてさらに共有したいと思いますが、これはスタック トレースの範囲に関するものです。

4

5 に答える 5

4

ParentCompanyIdであることをご確認の上ご利用くださいnull
そんな時に使いたいCurrentCompanyID

これ:

return CurrentCompany.ParentCompanyId == null 
    ? (Guid)CurrentCompany.ParentCompanyId : CurrentCompanyID;

これでなければなりません:

return CurrentCompany.ParentCompanyId != null 
    ? (Guid)CurrentCompany.ParentCompanyId : CurrentCompanyID;

お知らせ==です!=。基本的には、条件を逆にしたいだけです。

于 2013-10-01T19:07:34.970 に答える
1

null をチェックして使用しています。そのはず!=

private Guid MainCompanyID
{
    get
    {
        return CurrentCompany.ParentCompanyId != null ? (Guid)CurrentCompany.ParentCompanyId : CurrentCompanyID;
    }
}

これは、null 照合演算子を使用して次のように簡単に書き直すことができます??(parentId が Guid? で CurrentCompanyID が Guid の場合)。

private Guid MainCompanyID
{
    get
    {
        return CurrentCompany.ParentCompanyId ?? CurrentCompanyID;
    }
}
于 2013-10-01T19:09:12.313 に答える
1

あなたCurrentCompany.ParentCompanyIdはnull可能であるためnull-coalescing operator -??、以下のように使用することもできます。

private Guid MainCompanyID
{
    get
    {
        return (Guid)(CurrentCompany.ParentCompanyId ?? CurrentCompanyID);
    }
}
于 2013-10-01T19:19:41.283 に答える
0

三項演算子に問題があります。この行:

return CurrentCompany.ParentCompanyId == null ? (Guid)CurrentCompany.ParentCompanyId : CurrentCompanyID;

基本的には次のように変換されます。

if (CurrentCompany.ParentCompanyId == null) 
    return (Guid)CurrentCompany.ParentCompanyId
else
    return CurrentCompanyID;

したがって、問題は、ここで null を Guid にキャストしようとしていることです。状態を逆にする必要があります。

return CurrentCompany.ParentCompanyId != null ? (Guid)CurrentCompany.ParentCompanyId : CurrentCompanyID;
于 2013-10-01T19:09:12.427 に答える