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


Автор: DenWPF 6.4.2010, 22:34
что не так?
Код

namespace Reduction_reference
{
    interface Service_small
    {
        string GetReductionReference(string uri);
    }
    class Bit_ly : Service_small
    {
        public static void setIBitlyService(string login, string seccode)
        {

        }
        public static string GetReductionReference(string uri)
        {
            return null;
        }
    }
}

Автор: diadiavova 6.4.2010, 22:56
Цитата(DenWPF @  6.4.2010,  23:34 Найти цитируемый пост)
что не так?

static

Автор: DenWPF 6.4.2010, 23:12
убрать? добавить?
или вообще нельзя?

Автор: diadiavova 6.4.2010, 23:14
убрать. А зачем он там? Вообще, когда студия ругается читай сообщения

Автор: DenWPF 6.4.2010, 23:18
эм, ну мне не надо создавать объект это класса.
мне надо просто вызвать функцию а она вернет то что надо мне....

Автор: diadiavova 7.4.2010, 00:29
Цитата(DenWPF @  7.4.2010,  00:18 Найти цитируемый пост)
эм, ну мне не надо создавать объект это класса.
мне надо просто вызвать функцию а она вернет то что надо мне....

И каким образом ты собираешься сделать это через интерфейс? smile 

Автор: DenWPF 7.4.2010, 09:02
нууу я о том же..надо наверное какой то абстрактный класс =) я же о том и говорю что я не знаю.

Автор: Dobermann 7.4.2010, 10:44
Из-за одного метода наследовать классу интерфейс по-моему глупо...просто удали интерфейс, а статики оставь...

Автор: DenWPF 7.4.2010, 11:32
а если посмотришь http://forum.vingrad.ru/forum/topic-296555.html то там мне как раз нужен интерфейс..или придется делать через попу..

но это вроде единственный выбор.

Автор: Dobermann 7.4.2010, 11:50
http://www.rsdn.ru/article/mag/200401/codestyle.XML

Автор: DenWPF 7.4.2010, 15:19
в общем спасибо, но конкретизируй на что ты мне указываешь...
проблема так и не решена.

Автор: PashaPash 7.4.2010, 15:57
DenWPF, через попу - это через интерфейсы, в твоем случае. По ссылке на соседний топик - ты записываешь в файл поля объекта класса, а не статические поля. По крайней мере static там вообще не упоминается.

Опиши задачу нормально, не плоди топики. Ну найдешь ты способ оставить и интерфейс и статик в своем примере (хотя не найдешь на самом деле). Что ты сохранять собираешься? Метод?

Автор: DenWPF 7.4.2010, 16:17
у меня есть 10 классов.
каждый класс имеет статический метод GetStr.

в главном классе я вызваю метод 
Код

Start(string url, string service)
{
    //тут надо вызывать метод из тех 10 классов.
//если service == bit.ly то класс Bit_ly.GetStr(uri)
}

diadiavova помог
//var t = Type.GetType("имя класса");
 //var b = Activator.CreateInstance(t);

но что бы вызвать объект этого класса надо преобразовать с помощью интерфейса.
но через интерфейс не получиться создать метод статический.

есть способ обхода, но diadiavova сказал что это не сильно правельно, хоть и работает.

Автор: PashaPash 7.4.2010, 17:35
Цитата(DenWPF @  7.4.2010,  16:17 Найти цитируемый пост)

но что бы вызвать объект этого класса надо преобразовать с помощью интерфейса.


да, нужно, но из-за статиков у тебя объектов классов нет. нечего создавать через activator, нечего преобразовывать, негде искать интерфейс, нет объекта, у которого можно вызвать метод.

DenWPF, хочешь правильно - пометь метод аттрибутом. 

Автор: DenWPF 7.4.2010, 17:41
моя твоя не понимать...
реально не понимаю =(

Автор: diadiavova 7.4.2010, 18:02
DenWPF, в соседнем топике ты спрашивал именно как создать экземпляр, поэтому там естественно нужен был интерфейс или общий базовый класс, здесь ты описываешь задачу совсем иначе, теперь тебе экземпляр уже не надо создавать. Так раз задача на самом деле другая, то и решение у неё тоже другое. или как ты думаешь? smile 
В принципе задачу можно было бы и подробнее описать, очень трудно что-то советовать, не зная что нужно на самом деле. Если у тебя все десять классов существуют ради одного метода каждый, то видимо проще было бы в одном классе реализовать все 10 методов и дать им имена, которые ты даёшь классам. В преинципе, если другого способа не найдёшь(из-за секретности информации о проекте smile ), то вызывать методы можно и через жопу рефлексию.

Автор: DenWPF 7.4.2010, 18:40
ладно, использую рефлекцию.

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