掲示板一覧   -   トピック一覧
   EA API
     アドインからタグ付き値を変更したのですが、うまく行きません


フラット表示 前のトピック | 次のトピック
投稿者 トピック
mogass
投稿日時: 2014-7-31 11:08
EA Administrator
投稿: 171

アドインからタグ付き値を変更したのですが、うまく行きません

サポートに頂きましたご質問と回答の要約です。

○ご質問

アドインから直接タグ付き値を変更したのですが,うまく行きません。
ヘルプを見ると,EA.TaggedValue.Value は string 形の RW になっているので,直接変更できるハズだと思うのですが,たとえば,

ある要素が "test:hoge" というタグ付き値を持っているとき,

element.TaggedValues.GetByName("test").Value;

で hoge を取得できますが,これを foo に上書きしたい場合,

element.TaggedValues.GetByName("test").Value = "foo";
//アップデート(どこまでやれば良いのか??)
element.TaggedValues.GetByName("test").Update();
element.TaggedValues.Refresh();
element.Update();

とやっても書き換えられません.TaggedValue クラスには,値を書き換えるメソッドも提供されていないように見えるのですが,
どうやったらタグ付き値を直接書き換えられるのでしょうか?


○回答

この度はご不便をお掛けし申し訳ございません。
GetByName()で取得されるオブジェクトは、参照ではなく、
別のオブジェクトとしてコピーが作成されますので、
ご質問にございましたコードの場合は、それぞれ別の
オブジェクトに対して操作を行っている。という状況になります。

> element.TaggedValues.GetByName("test").Value = "foo";
(オブジェクト(1)に対してValueに"foo"を設定)
> element.TaggedValues.GetByName("test").Update();
(オブジェクト(2)に対してUpdate()を実行)


このため、値の変更と保存は同一のオブジェクトに対して
一連の操作で行う必要がございます。

例えば、以下のようなコードとすることで、正しく値が保存されるかと
思います。

//------------------------------------------------------------
EA.TaggedValue pTaggedValue = (EA.TaggedValue)element.TaggedValues.GetByName("test");
if (pTaggedValue != null)
{
pTaggedValue.Value = "foo";
pTaggedValue.Update();
}
element.TaggedValues.Refresh();
//------------------------------------------------------------

ご確認のほど宜しくお願いいたします。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » アドインからタグ付き値を変更したのですが、うまく行きません mogass 2014-7-31 11:08