COM として登録された古い DLL を置き換える C# のアセンブリで作業しています。その古い DLL は、COM 対応アプリケーション (VB や Perl など) を許可したり、次の VBS の例のようなことをしたりします。
dim All_Domains
set All_Domains = WScript.CreateObject("MailServerX.LocalDomains")
dim Specific_Domain
set Specific_Domain = All_Domains.Items(3)
dim Domain_Aliases
set Domain_Aliases = WScript.CreateObject("MailServerX.Lines")
Domain_Aliases.Add "one.com"
Domain_Aliases.Add "two.com"
Specific_Domain.Domain_Aliases = Domain_Aliases
All_Domains.Items(3) = Specific_Domain
最後の行でわかるように、プロパティ/メソッド LocalDomains.Items はパラメーター「3」を渡している間に割り当てられています。
古い DLL にアクセスするすべての既存のスクリプトとの互換性を維持するために、新しいアセンブリで同じインターフェイスを維持する必要があります。私はこの(非常に要約された)C#クラスを持っています:
public class LocalDomains
{
private List<LocalDomain> itemsList = new List<LocalDomain>();
# Assume the list is now loaded
public LocalDomain Items(int index)
{
return itemsList[index];
}
}
リストから値を返すだけでなく、新しい値の割り当てを含む itemsList[index] で何らかの処理を実行できるように、LocalDomains クラスにメソッド Items を記述するにはどうすればよいですか?
つまり、最初のコード ブロックの最後の行を新しいコードで有効に保つということです。
アドバイスをよろしくお願いします!