Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 14
1

Передача функции объекта с определенным интерфейсом

18.02.2012, 16:23. Показов 1494. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Спасите пожалуйста
Сделал библиотеку классов
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Vehicles
{
    public class Vehicles
    {
    }
    public class Car : Vehicles
    {
    }
    public class Train : Vehicles
    {
    }
    public interface IPassengerCarrier
    {
    }
    public interface IHeavyLoadCarrier
    {
    }
    public class Compact : Car, IPassengerCarrier
    {
    }
    public class SUV:Car, IPassengerCarrier
    {
    }
    public class Pickup : Car, IHeavyLoadCarrier
    {
    }
    public class PassangerTrain : Train, IPassengerCarrier
    {
    }
    public class FreightTrain : Train, IHeavyLoadCarrier
    {
    }
    public class DoubleBogey424 : Train, IHeavyLoadCarrier
    {
    }
}
Нужно сделать функцию, AddPassenger, которая будет принимать любой объект с интерфейсом и вывести для каждого из переданых объектов унаследованый от System.Object метод ToString IPassengerCarrier. Приложение, которое написал явно не работает. Что в нем не правильно, и как можно реализовать такую функцию?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace Traffic
{
    class Program
    {
        static void AddPassenger(IPassengerCarrier IPS)
        {
            Console.WriteLine(IPS.ToString());
        }
        static void Main(string[] args)
        {
            IPassengerCarrier IPS = new IPassengerCarrier();
            AddPassenger(IPS.IPassengerCarrier);
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2012, 16:23
Ответы с готовыми решениями:

Вывод объектов с определенным интерфейсом.
Добрый день форумчане. Изучаю C# по Нейгелу (базовый курс 2008). namespace Traffic { ...

Передача функции заранее неизвестного объекта
Здравствуйте. Можно ли не используя шаблонов передать функции объект заранее неизвестного класса и...

Передача переменной функции или свойства объекта
Всем доброго времени суток! Имеется некий код. Хочу отобразить в виде формы прогрессбар во время...

Передача объекта ifstream в качестве аргумента функции
Как решить данную проблему? vector<DataPerson> GetVector() { ifstream file("input.txt"); if...

1
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
18.02.2012, 16:51 2
Во-первых, вы пытаетесь создать объект интерфейса, чего делать нельзя.
Во-вторых, у интерфейса IPassengerCarrier не определено свойство IPassengerCarrier типа IPassengerCarrier, так что вызов метода тоже фейлится.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    public class Compact : Car, IPassengerCarrier
    {
        public override string ToString() { return "Compact"; }
    }
    public class SUV:Car, IPassengerCarrier
    {
        public override string ToString() { return "SUV"; }
    }
 
namespace Traffic
{
    class Program
    {
        static void AddPassenger(IPassengerCarrier IPS)
        {
            Console.WriteLine(IPS);
        }
        static void Main(string[] args)
        {
            IPassengerCarrier IPS = new SUV();
            AddPassenger(IPS);
        }
    }
}
Хотя, сдается мне, метод AddPassenger все-таки должен объявляться в интерфейсе IPassengerCarrier.
1
18.02.2012, 16:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2012, 16:51
Помогаю со студенческими работами здесь

Передача объекта в качестве аргумента функции (метода)
На "Интуите" имеем код: class Complex { public: int real; // вещественная часть int...

Передача любого объекта в виде параметра функции в отдельный класс
Доброго времени суток, подскажите пожалуйста, у меня есть несколько панелей, на которых нужно...

Передача функции указателя на метод класса и его объекта для вызова
std::thread позволяет в качестве исполняемой функций принимать метод класса и указатель на его...

Разработка com объекта с графическим интерфейсом
Доброе времяни суток уважаемые форумчани. Столкнулся с такой проблемой. Необходимо расширить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru