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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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!