Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Одинаковые методы с разными типами параметров


Автор: href 9.5.2009, 15:27
У меня есть два метода с абсолютно одинаковым содержимым, но с разными типами передаваемых им параметров.

private string WriteNewSMS(Microsoft.WindowsMobile.PocketOutlook.SmsMessage sms)
private string WriteNewSMS(InTheHand.WindowsMobile.PocketOutlook.SmsMessage sms)

Подскажите, пожалуйста, как бы так сделать, чтобы не приходилось 2 раза писать одно и то же содержимое. 
При этом, по-простому сконвертировать  один тип в другой  не удаётся из-за необходимости записи в ReadOnly поля. 

Что делать?


Автор: Madonna 9.5.2009, 15:37
Цитата(href @  9.5.2009,  13:27 Найти цитируемый пост)
У меня есть два метода с абсолютно одинаковым содержимым, но с разными типами передаваемых им параметров.

Generics?

Автор: NightmareZ 9.5.2009, 15:49
Тела методов покажи.

Автор: href 9.5.2009, 16:33
Цитата(NightmareZ @ 9.5.2009,  15:49)
Тела методов покажи.

Код

        private string WriteNewSMS(Microsoft.WindowsMobile.PocketOutlook.SmsMessage sms)
        {
            XElement XSMSHistory = XElement.Load(filenameSMSHistory);

            string GUID = System.Guid.NewGuid().ToString();

            XSMSHistory.Add(new XElement("SMS",
                            new XAttribute("GUID", GUID),
                            new XAttribute("From", sms.From.Address),
                            new XAttribute("SendDateTime", sms.LastModified),
                            new XAttribute("ReceivedDateTime", sms.Received),
                            new XAttribute("Text", sms.Body)
                ));
            XSMSHistory.Save(filenameSMSHistory);
            return GUID;
        }

        private string WriteNewSMS(InTheHand.WindowsMobile.PocketOutlook.SmsMessage sms)
        {
            XElement XSMSHistory = XElement.Load(filenameSMSHistory);

            string GUID = System.Guid.NewGuid().ToString();

            XSMSHistory.Add(new XElement("SMS",
                            new XAttribute("GUID", GUID),
                            new XAttribute("From", sms.From.Address),
                            new XAttribute("SendDateTime", sms.LastModified),
                            new XAttribute("ReceivedDateTime", sms.Received),
                            new XAttribute("Text", sms.Body)
                ));
            XSMSHistory.Save(filenameSMSHistory);
            return GUID;
        }        

Автор: Neox_GeForce 9.5.2009, 19:37
сделай приведение типов между Microsoft.WindowsMobile.PocketOutlook.SmsMessage и InTheHand.WindowsMobile.PocketOutlook.SmsMessage.
И вызивай одни метод только.

Автор: Partizan 9.5.2009, 19:58
Neox_GeForce, какое приведение типов?


href, если у обоих классов есть общий базовый, содержащий все необходимые свойства, то логично было бы входной параметр сделать именно базового типа...

Автор: Bishop 12.5.2009, 10:35
href, 
Код

private string WriteNewSMS(Microsoft.WindowsMobile.PocketOutlook.SmsMessage sms)
{
    WriteNewSMS(sms.From.Address, sms.LastModified, sms.Received, sms.Body);
}

private string WriteNewSMS(InTheHand.WindowsMobile.PocketOutlook.SmsMessage sms)
{
    WriteNewSMS(sms.From.Address, sms.LastModified, sms.Received, sms.Body);
}

private string WriteNewSMS(string address, string lastModi, string received, string body)
{
    XElement XSMSHistory = XElement.Load(filenameSMSHistory);

    string GUID = System.Guid.NewGuid().ToString();

    XSMSHistory.Add(new XElement("SMS",
                    new XAttribute("GUID", GUID),
                    new XAttribute("From", address),
                    new XAttribute("SendDateTime", lastModi),
                    new XAttribute("ReceivedDateTime", received),
                    new XAttribute("Text", body)
        ));
    XSMSHistory.Save(filenameSMSHistory);
    return GUID;
}

Автор: href 26.5.2009, 16:20
Цитата(Madonna @ 9.5.2009,  15:37)
Цитата(href @  9.5.2009,  13:27 Найти цитируемый пост)
У меня есть два метода с абсолютно одинаковым содержимым, но с разными типами передаваемых им параметров.

Generics?

спасибо. попробовал. но тут же возникла следующая проблема:
http://forum.vingrad.ru/forum/topic-260819/anchor-entry1878880/0.html

Добавлено через 4 минуты и 27 секунд
Bishop, спасибо. так и сделал!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)