30.06.2013 Views

Book of Red Gate 2010 - Red Gate Software

Book of Red Gate 2010 - Red Gate Software

Book of Red Gate 2010 - Red Gate Software

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Type type = Type.GetType(c_TheType, true);<br />

object typeAndNodeRegistrationHelper =<br />

source.GetService(type);<br />

IList typeBuilders = ReflectionUtils.GetFieldValue<br />

(typeAndNodeRegistrationHelper,<br />

“childTypes”);<br />

if (typeBuilders != null)<br />

{<br />

LockingUtils.TryLock(typeBuilders, delegate<br />

{<br />

Set seenBuilders =<br />

new Set();<br />

for (int i=typeBuilders.Count-1; i>=0; --i)<br />

{<br />

object typeBuilder = typeBuilders[i];<br />

bool seen = false;<br />

ReflectionUtils.UpdateFieldValue<br />

(typeBuilder,<br />

“builder”, oldBuilder =><br />

{<br />

IQueryProvider proxiedBuilder =<br />

m_ObjectExplorer.GetQueryProviderProxy(<br />

oldBuilder);<br />

seen = ! seenBuilders.AddIfNotExists(<br />

proxiedBuilder);<br />

return proxiedBuilder;<br />

});<br />

if (seen)<br />

{<br />

typeBuilders.RemoveAt(i); //SOC-130<br />

}<br />

}<br />

});<br />

}<br />

Runners Up:<br />

David Connell, Simon Cooper, Andrew<br />

Hunter, Konstantin Vorozcovs<br />

(All code submissions available in the<br />

Appendix <strong>of</strong> the ebook version)<br />

18

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!