{
KeyedByTypeCollection<IPolicyImportExtension> policy_extensions;
Collection<MetadataConversionError> errors = new Collection<MetadataConversionError> ();
+ Dictionary<Object,Object> state = new Dictionary<Object, Object> ();
internal MetadataImporter (IEnumerable<IPolicyImportExtension> policyImportExtensions)
{
policy_extensions.Add (new MessageEncodingBindingElementImporter ());
}
- [MonoTODO ("Not in use yet")]
public Collection<MetadataConversionError> Errors {
get { return errors; }
}
}
public Dictionary<Object,Object> State {
- get { throw new NotImplementedException (); }
+ get { return state; }
}
public Dictionary<XmlQualifiedName,ContractDescription> KnownContracts {
public abstract Collection<ContractDescription> ImportAllContracts ();
public abstract ServiceEndpointCollection ImportAllEndpoints ();
+
+ internal T GetState<T> () where T : class, new ()
+ {
+ object value;
+ if (!state.TryGetValue (typeof(T), out value)) {
+ value = new T ();
+ state.Add (typeof(T), value);
+ }
+ return (T) value;
+ }
+
+ internal MetadataConversionError AddError (string message, params object[] args)
+ {
+ var error = new MetadataConversionError (string.Format (message, args));
+ Errors.Add (error);
+ return error;
+ }
+
+ internal MetadataConversionError AddWarning (string message, params object[] args)
+ {
+ var error = new MetadataConversionError (string.Format (message, args), true);
+ Errors.Add (error);
+ return error;
+ }
+
+ internal class MetadataImportException : Exception
+ {
+ public MetadataConversionError Error {
+ get;
+ private set;
+ }
+
+ public MetadataImportException (MetadataConversionError error)
+ : base (error.Message)
+ {
+ this.Error = error;
+ }
+
+ public MetadataImportException (MetadataConversionError error, Exception inner)
+ : base (error.Message, inner)
+ {
+ this.Error = error;
+ }
+ }
+
}
}