В настоящее время у меня есть общий класс, который позволяет использовать выражение в качестве значения.неявное преобразование из T и строки
public class Expression<T>
{
public T Value { get; set; }
public string ExpressionText { get; set; }
public static implicit operator Expression<T>(string input)
{
if (string.IsNullOrEmpty(input))
return null;
if (input.StartsWith("="))
return new Expression<T> { ExpressionText = input };
var converter = TypeDescriptor.GetConverter(typeof(T));
T value = (T)converter.ConvertFromString(input);
return new Expression<T> { Value = value };
}
public static implicit operator Expression<T>(T value)
{
if (value == null)
return null;
return new Expression<T> { Value = value };
}
То, что я хотел бы быть в состоянии сделать это, чтобы установить свойства, используя неявные преобразования из обоих Т и из строки. Однако, если выражение имеет строку типа, компилятор не может решить, какое преобразование использовать.
Есть ли умный способ обойти это?
Спасибо,
Шон
Спасибо за подробный ответ. Я решил создать статический метод, который будет обрабатывать преобразование из строки и использовать неявное преобразование для T, поскольку это будет наиболее часто используемое из двух. – seanzi