private PatternInfo GetOrCreatePatternInfo (int id, object provider,
string path,
CreateWrapperFromProvider wrapperCreator)
{
PatternInfo oldInfo;
if (patternMapping.TryGetValue (id, out oldInfo)) {
if (oldInfo.Provider == provider)
return oldInfo;
}
object wrapper = wrapperCreator (provider);
PatternInfo newInfo = new PatternInfo {
Path = path,
Provider = provider,
ProviderWrapper = wrapper
};
patternMapping [id] = newInfo;
bus.Register (new ObjectPath (path), wrapper);
return newInfo;
}