private T GetCommonMetadata <T>(out bool wasCreated) where T : new() { object val; if (_metadata.TryGetValue(typeof(T), out val) == false) { val = new T(); _metadata[typeof(T)] = val; wasCreated = true; } else { wasCreated = false; } return((T)val); }
/// <summary> /// Get a child metadata instance for the given identifier. This is useful for general /// classes and structs where an object has a set of discrete named fields or properties. /// </summary> public fiGraphMetadataChild Enter(string childIdentifier) { fiGraphMetadata metadata; if (_childrenString.TryGetValue(childIdentifier, out metadata) == false) { metadata = new fiGraphMetadata(this, childIdentifier); _childrenString[childIdentifier] = metadata; } return(new fiGraphMetadataChild { Metadata = metadata }); }
/// <summary> /// Get a child metadata instance for the given identifier. This is /// useful for collections where each item maps to a unique index. /// </summary> public fiGraphMetadataChild Enter(int childIdentifier, object context) { fiGraphMetadata metadata; if (_childrenInt.TryGetValue(childIdentifier, out metadata) == false) { metadata = new fiGraphMetadata(this, childIdentifier.ToString()); _childrenInt[childIdentifier] = metadata; } metadata.Context = context; return(new fiGraphMetadataChild { Metadata = metadata }); }