Я ошеломлен тем, что это даже не компилируется. Это тестовая программа проблемы, с которой я сталкиваюсь в службе WCF, которую я пишу (где в основном клиент отправляет wcf-службу список различных задач, я тогда обрабатываю серверную часть, представляющую список различных задач, и нужно каждый раз использовать разные методы для каждого).Метод Перегрузка с объектами, реализующими один и тот же интерфейс
ошибкакомпиляции: не может конвертировать из 'UserQuery.IMyInterface' в 'UserQuery.MyObj1'
public interface IMyInterface{};
public class MyObj1 : IMyInterface{};
public class MyObj2 : IMyInterface{};
public String Process(MyObj1 obj)
{
return "did one";
}
public String Process(MyObj2 obj)
{
return "did two";
}
void Main()
{
IMyInterface obj = new MyObj1();
var s = Process(obj);
s.Dump();
}
Почему ваш основной класс должен быть снабжен функциями как для MyObj1, так и для MyObj2? Разве эти люди не справятся с этим? У вашего дизайна есть некоторые странные недостатки, которые мы не можем решить, вероятно, пока вы не скажете, зачем вам эти два метода, где они есть. – HimBromBeere
Вы ошеломлены тем, что автоматическое преобразование типов из типа * меньше * в тип * больше *? С какого языка программирования вы пришли? Python? Objective-C? C# не является «истинным» языком ООП, он имеет много статических типов проверки. – Luaan
@ Luaan> Когда вы думаете об этом статически, это имеет смысл. Я думал, что во время выполнения я увижу экземпляр объекта и запустим правильную перегрузку. Забыл, он будет связан статически. – ZARk