Nano Hash - криптовалюты, майнинг, программирование

Общий метод: ограничение с интерфейсом, как получить доступ к свойствам

Я хочу получить доступ к свойству нового созданного объекта в универсальном методе, который ограничен интерфейсом:

public interface MyInterface
{
    int ID { get; set; }
    string Name { get; set; }
}

Поскольку компилятор знает, что "T" имеет тип MyInterface, должна быть возможность доступа к свойствам этого интерфейса:

public T doSomething<T>(String value) where T : MyInterface, new()
{
    T entity =  new T();
    entity.Name = value;    
    return entity;
}

Но он говорит: T не имеет определения для «Имени»

Если я могу использовать интерфейс в качестве ограничения здесь: почему невозможно получить доступ к его свойствам?


  • У вас есть MyInterface в другом пространстве имен? Вы сделали чистку и восстановление? 26.03.2015
  • Он отлично работает для меня. у меня нет проблем 26.03.2015
  • Это действительно ваш настоящий код? 26.03.2015
  • Да, это другое пространство имен, но я интегрировал его с помощью оператора. И нет, это не мой реальный код, он упрощен. 26.03.2015
  • в основном это похоже на проблему с пространством имен. Создайте простой класс, а затем попробуйте реализовать в нем свой MyInterface. Компилятор выдаст ошибку, если это проблема с пространством имен, сообщите нам об ошибке 26.03.2015

Ответы:


1

Код, который вы разместили, верен сам по себе. Может у вас разные версии интерфейса (MyInterface в разных пространствах имён)? Проверьте пространства имен/полные имена типов интерфейсов. Также проверьте версии сборки, если объявляете типы в другой сборке...

26.03.2015

2
    public class Foo2 : MyInterface
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }

...

    var foo = doSomething<Foo2>("test");
    Console.WriteLine(foo.Name);

Кажется, работает, пока ваш код имеет пространство имен вашего интерфейса и конкретного класса в предложении использования. Кроме того, по соглашению MyInterface должен быть IMyInterface.

26.03.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..