IModel.SetFieldAt メソッド
名前空間: NextDesign.Core
説明
このインスタンスの指定されたフィールドの指定されたインデックス位置に、指定された値を設定します。
指定されたフィールドに設定できない値が指定された場合は、例外がスローされます。
なお、フィールドの多重度上限制約、パス制約に違反しても例外はスローされません。
引数
名前 | 型 | 説明 |
---|---|---|
fieldName | string | フィールド名 null、または空文字列は指定できません。 |
value | object | フィールドの値 |
index | int | 位置 先頭位置を0とするインデックスを指定します。 |
戻り値
- void
例外
名前 | 例外クラス | 説明 |
---|---|---|
引数不正 | ExtensionArgumentException | fieldName に null、または空文字列 を指定した場合 |
フィールドが見つからない | ExtensionFieldNotFoundException | 指定されたフィールドがこのインスタンスのメタクラスで見つからない場合 |
不正フィールドアクセス | ExtensionIllegalFieldAccessException | 多重度の上限が1のフィールドに対してこのメソッドを実行した場合 |
インデックス範囲不正 | ExtensionOutOfRangeException | index に 負数が指定された場合 または、index に該当フィールドの要素数以上の値が指定された場合 |
フィールドの型と一致しない | ExtensionInvalidTypeException | value に対して、指定されたフィールドに設定できない値が指定された場合 - クラス型のフィールドにプリミティブ型の値や、列挙値が指定された - 互換のないクラス型が指定された |
不正操作 | ExtensionInvalidOperationException | 自身が削除済みモデル、一時プロキシの場合 フィールド名に操作不可のフィールドが指定された場合 - プロダクトラインのフィーチャ割り当てフィールド - System.Coreタグが付与されているフィールド |
循環参照 | ExtensionCircularReferenceException | クラス型の所有フィールドに対しての呼び出し時、引数 value にこのメソッドの呼び出し対象自身またはその祖先を指定した場合 |
無効なモデルを指定した | ExtensionInvalidModelException | フィールドの値に削除されたモデル、一時プロキシが指定された場合 |
注釈
フィールドの型によって設定できる値について
フィールドの型によって設定できる値が以下のように決まります。
-
プリミティブ型フィールド(整数、実数、真偽値、文字列、リッチテキスト)
本メソッドでは設定できません。
-
列挙型フィールド
本メソッドでは設定できません。
-
クラス型フィールド
クラス型のフィールドでは、IModelインタフェースのインスタンスおよびnullを設定できます。
IModel型の値が指定された場合、既に設定されていたモデルの代わりに、指定されたモデルを設定 します。
このとき、フィールドが所有か参照かで動作が異なります。- 所有の場合、引数で指定されたモデルを、メソッド呼び出し元のモデルの子として移動します。また、既に設定されていたモデルを削除します。
- 参照の場合、引数で指定されたモデルとの間に参照関連を追加します。また、既に設定されていたモデルとの間に存在した参照関連を削除します。既に設定されていたモデル自体は削除されません。
nullが指定された場合、既に設定されていたモデルの設定解除のみ行います。
- 所有の場合、既に設定されていたモデルは削除します。
- 参照の場合、既に設定されていたモデルとの間に存在した参照関連を削除します。既に設定されていたモデル自体は削除されません。
nullが指定されたとき、指定番目の要素が削除され、後続の要素が前方に詰められます。