First of it all: i try to answer on codeplex for few days but i got a system
degradation notice. (codeplex is currently down on dicussions. full discussion: http://netoffice.codeplex.com/discussions/587938)
Not sure i understand you correctly or may you didnt realize how COM is working. Any time you called Application.ActiveSheet you got a new!!! instance(proxy from the application) Of course its still the same instance on the COM-Server(if current sheet not changed) but you got a new instance/proxy each time you ask for. (You dont need to dispose each instance/proxy instance in NetOffice explictitly, moreover you can compare the local proxy-instances as easy with "==" or "!=" but this is just some NetOffice magic)
You have to re-cast a Worksheet instance each time you ask for or use cache strategy.
What i can do for you is to spend an event in the NetOffice Factory Core.
Something like this:
//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);
}
}
In this example, all sheets with name "MySheet" want replaced automicaly with your custom type.
(You still have to convert Application.ActiveSheet to your custom type of course)
Let me know what you think* so i can create this event today and build a new release.
*Sebastian
(Disclaimer: Author from NetOffice)