IronPythonで .NET 値型を使用する場合、よく知られている問題があります。これは最近、Python を C# の組み込みスクリプト言語として使用しようとしたときに頭痛の種になりました。問題は次のように要約できます。
次のような C# 構造体があるとします。
struct Vector {
public float x;
public float y;
}
そして、次のような C# クラス:
class Object {
public Vector position;
}
以下は、IronPython で発生します。
obj = Object()
print obj.position.x # prints ‘0’
obj.position.x = 1
print obj.position.x # still prints ‘0’
記事が述べているように、これは値型がほとんど不変であることを意味します。ただし、上記のように実装されているベクター ライブラリを使用する予定だったので、これは問題です。値型に依存する既存のライブラリを操作するための回避策はありますか? ライブラリを変更することは最後の手段ですが、それは避けたいと思います。