Наследование функций C# и использование возможности повторного использованияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Наследование функций C# и использование возможности повторного использования

Сообщение Anonymous »

Я совершенно не знаю, как назвать то, чем хочу заниматься (отсюда и трудности, с которыми я сталкиваюсь, пытаясь это исследовать). Но у меня есть вот это:

Код: Выделить всё

public interface IShapes
{
public void Draw();
}
public class Square : IShapes
{
public void Draw()
{
Console.WriteLine(GetType().FullName?.Substring(GetType().FullName.IndexOf('.') + 1) + " - Draw");
}
}
public class Circle : IShapes
{
public void Draw()
{
Console.WriteLine(GetType().FullName?.Substring(GetType().FullName.IndexOf('.')+1) + " - Draw");
}
}
Я хочу избавиться от дублирования кода, изменив интерфейс на что-то подходящее, например, на класс, но затем используя отражение для вызова правильного (т. е. «самого» дочернего наследования) Метод Draw.
Таким образом, в другом месте я мог бы вызвать такой вызов (чтобы следовать примеру кода выше):

Код: Выделить всё

var shapes = new List();
shapes.Add(new Circle());
shapes.Add(new Square());

shapes.ForEach((s) =>
{
s.Draw();
});
Это приведет к появлению «Круг — Нарисовать» и «Квадрат — Нарисовать».
Я попробовал изменить интерфейс на класс (и абстракт), но мне кажется, что я упускаю что-то очевидное.
Я также пытался в классах Square и Circle: Shapes определить новые публичные методы void Draw(), которые вызывают base. Draw() напрямую, но это тоже не работает.

Подробнее здесь: https://stackoverflow.com/questions/787 ... eusability
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»