まず第一に、コードプレックスで数日間回答しようとしましたが、システムの劣化に関する通知がありました。(codeplex は現在議論中です。完全な議論: http://netoffice.codeplex.com/discussions/587938 )
あなたのことを正しく理解できていないか、COM がどのように機能しているかを理解していない可能性があります。Application.ActiveSheet を呼び出すたびに、新しいものが得られます!!! インスタンス(アプリケーションからのプロキシ)もちろん、COM-Server上の同じインスタンス(現在のシートが変更されていない場合)ですが、要求するたびに新しいインスタンス/プロキシを取得します. (NetOffice の各インスタンス/プロキシ インスタンスを明示的に破棄する必要はありません。さらに、"==" または "!=" を使用してローカル プロキシ インスタンスを簡単に比較できますが、これは NetOffice の魔法にすぎません)
キャッシュ戦略を要求または使用するたびに、Worksheet インスタンスを再キャストする必要があります。
私にできることは、NetOffice Factory Core でイベントを開催することです。このようなもの:
//Event Trigger Example
private NetOfficeCore_OnCreateInstance(object newInstance, ref Type replaceTo)
{
Worksheet sheet = newInstance as WorkSheet;
if(null != sheet && sheet.Name = "MySheet")
{
replaceTo = typeof(MyCustomWorkSheet);
}
}
この例では、「MySheet」という名前のすべてのシートが、カスタム タイプに自動的に置き換えられます。(もちろん Application.ActiveSheet をカスタムタイプに変換する必要があります)
今日このイベントを作成し、新しいリリースを作成できるように、ご意見をお聞かせください*。
*セバスチャン (免責事項: NetOffice の著者)