IModel.SetField メソッド¶
名前空間: NextDesign.Core
説明¶
このインスタンスの指定されたフィールドに、指定された値を設定します。
指定されたフィールドに設定できない値が指定された場合は、例外がスローされます。
なお、指定されたフィールドの多重度が2以上の場合は、該当フィールドの先頭要素を設定します。
引数¶
名前 | 型 | 説明 |
---|---|---|
fieldName | string | フィールド名 null、または空文字列は指定できません。 |
value | object | フィールドの値 |
戻り値¶
- void
例外¶
名前 | 例外クラス | 説明 |
---|---|---|
引数不正 | ExtensionArgumentException | fieldName に null、または空文字列 を指定した場合 |
フィールドが見つからない | ExtensionFieldNotFoundException | 指定されたフィールドがこのインスタンスのメタクラスで見つからない場合 |
フィールドの型と一致しない | ExtensionInvalidTypeException | value に対して、指定されたフィールドに設定できない値が指定された場合 - 文字列型、リッチテキスト型以外のプリミティブ型のフィールドの値に null 値が指定された - プリミティブの互換しない型が指定された - 列挙の型違いが指定された - クラス型のフィールドにプリミティブ型の値や、列挙値が指定された - 互換のないクラス型が指定された |
不正操作 | ExtensionInvalidOperationException | 自身が削除済みモデル、一時プロキシの場合 フィールド名に操作不可のフィールドが指定された場合 - プロダクトラインのフィーチャ割り当てフィールド - System.Coreタグが付与されているフィールド |
循環参照 | ExtensionCircularReferenceException | クラス型の所有フィールドに対しての呼び出し時、引数 value にこのメソッドの呼び出し対象自身またはその祖先を指定した場合 |
無効なモデルを指定した | ExtensionInvalidModelException | フィールドの値に削除されたモデル、一時プロキシが指定された場合 |
注釈¶
Ver.1.1 での API 仕様変更と移行方法について
このメソッドはVer1.1より、文字列型、リッチテキスト型のフィールドに対して null を設定できるようになりました。
本 API を利用している場合は、Ver.1.1 以降へのバージョンアップと合わせてエクステンション内の該当箇所を変更する必要があります。
フィールドの型によって設定できる値について
フィールドの型によって設定できる値が以下のように決まります。
-
プリミティブ型フィールド(整数、実数、真偽値、文字列、リッチテキスト)
プリミティブ型のフィールドでは、対応するC#の型に暗黙的にキャストできる値を設定できます。
ただし、リッチテキスト型のフィールドの場合、string型のみを設定できます。このとき、<b>
等のタグ指定によるリッチテキスト形式としての装飾は解釈されません。
また、プリミティブ型のフィールドでは、対応するC#の型に付随するParseメソッドで目的の型の値に変換できるような文字列を設定できます。
文字列型・リッチテキスト型の場合nullの設定を許容し、さらに以下の値も設定できます。- object型 : ToStringメソッドにより文字列に変換された値
-
列挙型フィールド
列挙型のフィールドでは、リテラルに対応する文字列を設定できます。
以下の場合にリテラルへの変換が可能です。- 文字列と一致するリテラル名をもつものがある場合は、そのリテラルに変換します。
- 一致するリテラル名をもつものがない場合は、文字列がリテラルの表示名と一致するものがある場合、はじめに見つかるリテラルに変換します。
-
クラス型フィールド
クラス型のフィールドでは、IModel型のインスタンスおよびnullを設定できます。
IModel型の値が指定された場合、既に設定されていたモデルの代わりに、指定されたモデルを設定します。
このとき、フィールドが所有か参照かで動作が異なります。- 所有の場合、引数で指定されたモデルを、メソッド呼び出し元のモデルの子として移動します。また、既に設定されていたモデルを削除します。
- 参照の場合、引数で指定されたモデルとの間に参照関連を追加します。また、既に設定されていたモデルとの間に存在した参照関連を削除します。既に設定されていたモデル自体は削除されません。
nullが指定された場合、既に設定されていたモデルの設定解除のみ行います。
- 所有の場合、既に設定されていたモデルは削除します。
- 参照の場合、既に設定されていたモデルとの間に存在した参照関連を削除します。既に設定されていたモデル自体は削除されません。
フィールドの多重度上限が2以上の場合は、0番目の要素が削除され、後続の要素が前方に詰められます。