Estoy usando una biblioteca con una clase que tiene los siguientes constructores:
public JobDataMap(IDictionary<string, object> map); public JobDataMap(IDictionary map);Creé una instancia de JobDataMap:
var jdm = new JobDataMap(new Dictionary<String, Object> { { "Manager", myObject } });Pero estoy recibiendo el error de compilación:
The call is ambiguous between the following methods or properties: 'JobDataMap.JobDataMap(IDictionary<string, object>)' and 'JobDataMap.JobDataMap(IDictionary)'¿Cómo resolver esto?
Puede convertirlo al tipo para el constructor que desea que use:
var jdm = new JobDataMap((IDictionary<string, object>) new Dictionary<String, Object> { { "Manager", new object() } });Este diseño parece un poco dudoso, sin embargo...
Puede hacer cumplir el tipo que se pasa así:
var jdm = new JobDataMap((IDictionary<string, object>)new Dictionary<String, Object> { { "Manager", myObject } }); O podría hacer un método de fábrica y hacer que el constructor no genérico (supongo que lo usa menos) sea private :
public class JobDataMap { public JobDataMap(IDictionary<string, object> map) { } private JobDataMap(IDictionary map) { } public static JobDataMap FromNonGenericMap(IDictionary map) { return new JobDataMap(map); } }Uso:
var jdm = JobDataMap.FromNonGenericMap(someNonGenericDictionary);y luego puedes usar el genérico regular así:
var jdm = new JobDataMap(new Dictionary<String, Object> { { "Manager", myObject } });