У меня есть интерфейс PropertyReference
, реализация Literal
и оператор неявного преобразования из int
в Literal
. Однако всякий раз, когда я пытаюсь использовать int
, где ожидается PropertyReference
, компилятор жалуется cannot convert from int to PropertyReference
.
Компилятор не позволяет мне добавить оператор преобразования в PropertyReference
, поскольку Interfaces cannot contain conversion, equality or inequality operators
. У меня есть класс PropertyReferenceExtension
stati c, и я не могу поместить туда оператор преобразования, потому что static classes cannot contain user-defined operators
.
Есть ли способ выполнить неявное преобразование в подтип, чтобы соответствовать супертипу, или преобразование должно быть явный? PropertyReference
и Literal
находятся в одном и том же пространстве имен, и класс, в котором выполняется преобразование, уже using FooBarNamespace
Оператор, который не может быть скомпилирован.
Assert.IsTrue(BigDouble.Equals(Min.Of(1,2,3), 1));
Подпись для Min.Of
public static Min Of(params PropertyReference[] children)
Подпись для неявного преобразования
public static implicit operator Literal(int value) => new Literal(new BigDouble(value));