掲示板一覧   -   トピック一覧
   EA API
     API経由でTemplate Parameter追加時に「制約」・「既定値」が設定できない


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
umesan
投稿日時: 2019-4-4 13:23
EA Administrator
投稿: 1502

API経由でTemplate Parameter追加時に「制約」・「既定値」が設定できない

サポート宛にいただきましたご指摘の要約です。

○ご指摘

[現象]
APIから、クラス要素にTemplate Parameterを追加し、「制約(Constraint)」・「既定値(Default)」に値を設定してもEAを開いて確認すると、設定されていない。

[再現ソースコード]
var element = package.Elements.AddNew(“TestClass”, "Class") as EA.Element;
element.Update();

var template_parameter = element.TemplateParameters.AddNew("T", "String") as EA.TemplateParameter;
template_parameter.Constraint = "aaa";
template_parameter.Default = "bbb";
template_parameter.Update();

element.TemplateParameters.Refresh();
element.Update();// ← ★

★の箇所でelement.TemplateParameters.GetAt(0)を取得すると、「Constraint」、「Default」の設定値が空になっているようです。


〇回答
この度はご迷惑をおかけしており申し訳ございません。頂きました現象につきまして、弊社環境でも再現させることができました。EA本体のバグと推測いたします。開発元に連絡するように致します。

TemplateParameterを追加後、一旦Update()を行い、その後 TemplateParameters から取得した TemplateParameter に対し、Constraint 等の設定を行うと回避できるようです。

頂きましたソースコードに対し変更を行った以下ソースコードで、弊社環境では回避できました。

var template_parameter = element.TemplateParameters.AddNew("T", "String") as EA.TemplateParameter;
//template_parameter.Constraint = "aaa"; // コメントアウト
//template_parameter.Default = "bbb"; // コメントアウト
template_parameter.Update();

element.TemplateParameters.Refresh();

template_parameter = element.TemplateParameters.GetAt(0);
template_parameter.Constraint = "aaa";
template_parameter.Default = "bbb";
template_parameter.Update();

お手数をおかけいたしますが、修正までは上記で回避頂けますようお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ