Код: Выделить всё
public interface INameable
{
///
/// The customer provided name of the object
///
public string Name { get; set; }
///
/// combination of the ObjectName and the customer provided name used to quickly display items in lists to prevent the need for reflexction
///
public string ObjectAndName => $"({ObjectName}) {Name}";
///
/// The coloquial name of the object
///
public string ObjectName { get; }
}
один класс, реализующий это интерфейс выглядит так:
Код: Выделить всё
public class Ink : Changeable, INameable
{
[Key]
public Guid InkId { get; init; } = Guid.NewGuid();
public string Color { get; set; }
public string Name { get => Color; set => Color = value; }
public string ObjectName => "Ink";
}
[img]https: //i.sstatic.net/eATiMJEv.png[/img]
когда я ссылаюсь на ObjectName, это выглядит так:
< img alt="введите описание изображения здесь" src="https://i.sstatic.net/nYdadrPN.png" />
Оба ожидаемы, оба имеют реализации для конкретного класса. Однако когда я ссылаюсь на свойство по умолчанию ObjectAndName, оно использует метод ToString класса:
[img]https: //i.sstatic.net/8M6hJMuT.png[/img]
Я знаю, что это метод ToString, потому что в других классах в том же списке (для простоты отфильтровано по картинкам) ) он отображает результаты их конкретной реализации ToString.
почему ссылка на реализацию интерфейса по умолчанию для ObjectAndName, определенного в интерфейсе, не вызывается при ссылке?
Изменить:
вот скрипач, упрощающий вопрос: https://dotnetfiddle.net/0hObJ1
Пользовательский интерфейс представляет собой Серверное приложение Radzen Blazor.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ng-instead