В .NET Core C#
я пробую что-то вроде этого:
(IInterface)instance
Где экземпляр новой реализации
()
И реализация: IInterface
Где находится новая реализация
()
И реализация: IInterface
Где находится новая реализация
()
И реализация: IInterface
code> & Параметр: IParameter
Проблема связана с приведением общего параметра. Когда я предоставляю параметр вместо IParameter, это работает, но во время компиляции невозможно узнать, какой тип, реализующий IParameter, будет использоваться. Все эти объекты будут созданы посредством отражения.
Итак, есть ли способ, которым это приведение работает? Или какой-то другой способ реализовать это, например, не предоставлять параметр универсального типа, как это можно сделать с помощью typeof.
EDIT Благодаря Ziriax< /p>
Полностью рабочий пример:
interface IInterface
{
void Run(TInput input);
}
abstract class AbstractClass : IInterface
where TInput : IParameter
{
public abstract void Execute(TInput input);
public void Run(IParameter input)
{
Execute((TInput)input);
}
}
interface IParameter {}
class Implementation : AbstractClass
{
public void Run(Parameter input)
{
}
}
class Parameter : IParameter {}
class Program
{
static void Main()
{
object instance = new Implementation();
var castInstance = (IInterface) instance;
castInstance.Run(new Parameter());
}
}
Подробнее здесь: https://stackoverflow.com/questions/528 ... implements
.NET Core Cast для интерфейса с параметром универсального типа типа, который реализует интерфейс. ⇐ C#
Место общения программистов C#
1726508572
Anonymous
В .NET Core C#
я пробую что-то вроде этого:
(IInterface)instance
Где экземпляр новой реализации
()
И реализация: IInterface
Где находится новая реализация
()
И реализация: IInterface
Где находится новая реализация
()
И реализация: IInterface
code> & Параметр: IParameter
Проблема связана с приведением общего параметра. Когда я предоставляю параметр вместо IParameter, это работает, но во время компиляции невозможно узнать, какой тип, реализующий IParameter, будет использоваться. Все эти объекты будут созданы посредством отражения.
Итак, есть ли способ, которым это приведение работает? Или какой-то другой способ реализовать это, например, не предоставлять параметр универсального типа, как это можно сделать с помощью typeof.
[b]EDIT[/b] Благодаря Ziriax< /p>
[b]Полностью рабочий пример:[/b]
interface IInterface
{
void Run(TInput input);
}
abstract class AbstractClass : IInterface
where TInput : IParameter
{
public abstract void Execute(TInput input);
public void Run(IParameter input)
{
Execute((TInput)input);
}
}
interface IParameter {}
class Implementation : AbstractClass
{
public void Run(Parameter input)
{
}
}
class Parameter : IParameter {}
class Program
{
static void Main()
{
object instance = new Implementation();
var castInstance = (IInterface) instance;
castInstance.Run(new Parameter());
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/52861860/net-core-cast-to-interface-with-generic-type-parameter-of-type-which-implements[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия