internal ModelMetadata(ModelMetadataProvider provider, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName, EfficientTypePropertyKey<Type, string> cacheKey) : this(provider, containerType, modelAccessor, modelType, propertyName) { if (cacheKey == null) { throw Error.ArgumentNull("cacheKey"); } _cacheKey = cacheKey; }
internal ModelMetadata(ModelMetadataProvider provider, Type containerType, Func <object> modelAccessor, Type modelType, string propertyName, EfficientTypePropertyKey <Type, string> cacheKey) : this(provider, containerType, modelAccessor, modelType, propertyName) { if (cacheKey == null) { throw Error.ArgumentNull("cacheKey"); } _cacheKey = cacheKey; }
public ModelMetadata(ModelMetadataProvider provider, Type containerType, Func <object> modelAccessor, Type modelType, string propertyName) { if (provider == null) { throw Error.ArgumentNull("provider"); } if (modelType == null) { throw Error.ArgumentNull("modelType"); } Provider = provider; _containerType = containerType; _modelAccessor = modelAccessor; _modelType = modelType; _propertyName = propertyName; // If metadata is for a property then containerType != null && propertyName != null // If metadata is for a type then containerType == null && propertyName == null, so we have to use modelType for the cache key. _cacheKey = new EfficientTypePropertyKey <Type, string>(_containerType ?? _modelType, _propertyName); }