2012-02-07 25 views
0

私は次の操作を実行したい:LinkedItemの値を設定するにはどうすればよいですか?

electronicSignatureModel.createdBy.Id = DbContext.CurrentUser.CreatedById; 

electronicSignatureModel.createdBy.Id = DbContext.CurrentUser.CreatedById。長いですか? DbContext.CurrentUser.CreatedByIdはlongですか?これをしようとすると、NullReferenceExceptionが発生します。 DbContext.CurrentUser.CreatedByIdには値があるので、electronicSignatureModel.createdBy.Idと関係があると思います。 electronicSignatureModel.createdByはLinkedItemであり、nullです。このLinkedItemをどのように埋めることができるので、nullではありませんか?次のように

LinkedItemが見えます:

#if SCRIPTSHARP 
    [Imported] 
    [IgnoreNamespace] 
    [ScriptName("Object")] 
#endif 
    public class LinkedItem : BaseModel 
    { 
     /// <summary> 
     /// entity that represents the item 
     /// </summary> 

#if SCRIPTSHARP 
     [PreserveCase] 
#endif 
     public string Entity; 

     /// <summary> 
     /// name of the item 
     /// </summary> 
#if SCRIPTSHARP 
     [PreserveCase] 
#endif 
     public string Name; 

     /// <summary> 
     /// id of the item 
     /// </summary> 
#if SCRIPTSHARP 
     [PreserveCase] 
#endif 
     public long? Id; 





    } 
} 
+1

どのようなタイプは、 'electronicSignatureModel'のですか?そのタイプはどのように見えますか? – svick

答えて

1

何かがnullであれば、それはそれが値を持たないことを意味します。そして、あなたは何のプロパティも変更できません。 IdcreatedByに設定する場合は、最初にcreatedByを非nullの値に設定する必要があります。

、あなたのような例を何かのために行うことができるが、electronicSignatureModelの種類をどうするかに依存しますが、それはアクセスセッターを持つプロパティだと仮定すると(またはパブリックフィールドが、あなたはそれらを避ける必要があります)を行う方法:

var createdBy = new LinkedItem(); 
createdBy.Id = DbContext.CurrentUser.CreatedById; 
electronicSignatureModel.createdBy = createdBy; 
object initializer syntaxを使用して

または代わりに、:

electronicSignatureModel.createdBy = 
    new LinkedItem { Id = DbContext.CurrentUser.CreatedById }; 
+0

それは仕事になった、モデルを使用していなかったので、var createdBy = new test.Web.Framework.Models.LinkedItem();代わりに。ありがとう。 –

関連する問題