IModel.AddNewModelTo メソッド
名前空間: NextDesign.Core
説明
このインスタンスの指定されたフィールドに、追加位置を指定して指定されたクラスのインスタンスをフィールド値として追加します。
指定されたクラスが抽象クラスの場合でもインスタンス化を許容し、指定された位置にフィールド値として追加します。
指定するフィールドは、クラス型の所有フィールドでなければなりません。
なお、多重度が2以上のフィールドの多重度上限制約に違反しても例外はスローされません。
指定するクラス名は、フィールドのデータ型と互換する型を指定する必要があります。
また、あいまい一致とするときに、一致するクラスが複数ある場合、一番最初に見つかった型互換のあるクラスのインスタンスを追加します。
引数
名前 | 型 | 説明 |
---|---|---|
fieldName | string | フィールド名 null、または空文字列は指定できません。 |
className | string | クラス名 クラスの名前、または完全修飾名を指定します。 null、または空文字列は指定できません。 |
direction | string | 追加方向 - "first" : 先頭 - "last" : 末尾 - "before" : 前 - "after" : 後 |
target | IModel | 追加基準モデル ここで指定したモデル位置を基準に追加位置を決定します。 direction の指定が "first"の場合は、基準モデルに関係なく先頭に追加します。 direction の指定が"last"の場合は、基準モデルに関係なく末尾に追加します。 direction の指定が "before"の場合は、指定されたモデルの位置に、"after"の場合は、指定されたモデルの次の位置にインスタンスを追加します。 |
fuzzy | bool | className引数を、完全修飾名ではなくクラスの名前として扱うかどうか。 Falseの場合、完全修飾名がclassNameに一致するクラスを指定したものとして評価します。 Trueの場合、クラス名がclassNameに一致するクラスを指定したものとして評価します。 既定値はTrueです。 |
戻り値
例外
名前 | 例外クラス | 説明 |
---|---|---|
引数不正 | ExtensionArgumentException | fieldName、または className に null、または空文字列 を指定した場合 direction に既定の文字列以外の文字列が指定された場合 追加位置の基準に指定したモデルがフィールド値に含まれていない場合 |
フィールドが見つからない | ExtensionFieldNotFoundException | 指定されたフィールドがこのインスタンスのメタクラスで見つからない場合 |
不正フィールドアクセス | ExtensionIllegalFieldAccessException | 多重度の上限が1のフィールドに対してこのメソッドを実行した場合 |
指定フィールド不正 | ExtensionInvalidTypeException | 指定されたフィールドに設定できない値が指定された場合 - 指定されたフィールドが所有フィールドでない - 指定されたフィールドのデータ型がクラス型でない - 指定されたフィールドの型と指定されたクラスが互換しない |
クラスが見つからない | ExtensionTypeNotFoundException | 指定されたクラスが見つからない場合 |
不正操作 | ExtensionInvalidOperationException | 自身が削除済みモデル、一時プロキシの場合 フィールド名に操作不可のフィールドが指定された場合 - プロダクトラインのフィーチャ割り当てフィールド - System.Coreタグが付与されているフィールド |