C#ではプロパティのオーバーロードがありません。あなたが求めているのはインデクサです。
public class Foo
{
SomeObject this[int index]
{
// The get accessor.
get
{
// return the value specified by index
}
// The set accessor.
set
{
// set the value specified by index
}
}
}
次のように私は配列のようFoo
を扱うことができることを意味:ここではインデクサーの例がある
ドキュメントはこの持っているあなたの場合
var f1 = new Foo();
SomeObject someObj = f1[1];
:
public Room this[
Phase phase
] { get; }
何つまり、FamilyInstance
にはPhase
のインスタンスをとり、Room
を返すインデクサーがあります。だから、あなたはこのようにそれを使用します。
// If phase is abstract then new the concrete type. I am not familiar with revit API
var somePhase = new Phase();
famInst[somePhase];
それとも、それは名前のインデクサーであることから、これを行うことができます。
famInst.FromRoom[somePhase];
他の一つは、プレーン財産であり、このように文書化:
public Room FromRoom { get; }
あなたが唯一のそのプロパティにアクセスすることができますが、あなたはこのようにそれを設定することはできません。
Room room = famInst.FromRoom;
基本的に、インデクサーを使用すると、クラスが配列でなくても配列のように扱うことができます。この場合、FamilyInstance
は配列のように扱うことができます。例えば、インデクサーを持っている.NETの多くの種類がありますが、String
は、このようなインデクサーがあります。
public char this[int index] { get; }
それはそれを取るにし、そのインデックスでchar
を返すか、インデックスが外にある場合、それは例外をスローします範囲。
これを試してみてくださいそのドキュメント – CodingYoshi
に私のリンクを与えてください:との問題があるように[OK]を、それが見えますhttp://www.revitapidocs.com/2017/ea6bc434-d938-d0e5-ecc3-33e37dbf1d1b.htm – konrad
それのRevit APIとIronPython実装。これは既にここで議論されています:http://stackoverflow.com/questions/39001482/revitapi-ironpython-toroom-returns-indexer-objectそれにはまだ答えがないようです。 – konrad