Интерфейсы
От: Dracula_DIS Россия  
Дата: 05.03.07 14:35
Оценка:
Объявляю public enum в namespace, как для него написать интерфейс ???
Тоесть плагин должен знать что у меня структура приложения такая:
namespace EnginePlugInSystem
{
        public enum InfoFlag {...}
        public class EnginePlugIn
    {
                ...
        }
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Say I...
Re: Интерфейсы
От: nikov США http://www.linkedin.com/in/nikov
Дата: 05.03.07 15:36
Оценка:
Здравствуйте, Dracula_DIS, Вы писали:

D_D>Объявляю public enum в namespace, как для него написать интерфейс ???


Перечисления (enums) реализуют только следующие интерфейсы:
IComparable, IFormattable, IConvertible
Re[2]: Интерфейсы
От: Dracula_DIS Россия  
Дата: 05.03.07 16:13
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Dracula_DIS, Вы писали:


D_D>>Объявляю public enum в namespace, как для него написать интерфейс ???


N>Перечисления (enums) реализуют только следующие интерфейсы:

N>
N>IComparable, IFormattable, IConvertible
N>


Я Имел в виду немного другое, я делаю систему которая грузит плагины, мне нужно описать интерфейс самой системы, который передается при загрузке плагина для обеспечения обратной связи прагин-приложение, и интерфейс самого плагина для связи система-плагин...
    public interface IEngine
    {
        // Methods
        void AppentInfo(String Text, String From, InfoFlag Flag);

        // Properties
        IrcClient Client { get; }
        IrcIdentifySystem IdentSys { get; }
    }

    public interface IPlugIn : IDisposable
    {
        // Methods
        bool InitPlugin(IEngine MainApp);
        void Stop();

        // Properties
        string Author { get; }
        string Description { get; }
        bool isStarted { get; }
        string Name { get; }
        string Version { get; }
    }

InfoFlag — это перечесление которое записано так:
namespace EnginePlugInSystem
{
        public enum InfoFlag {...}
        public class EnginePlugIn : IEngine
                {
            ...
        }
}

Я бы прописал жестко enum в IEngine, но он у меня используется и в другом классе...
Вроде полее понятно описал, как мне быть в этом случае?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Say I...
Re[3]: Интерфейсы
От: nikov США http://www.linkedin.com/in/nikov
Дата: 05.03.07 16:20
Оценка:
Здравствуйте, Dracula_DIS, Вы писали:

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


D_D>Вроде полее понятно описал


Я бы так не сказал...
Re[4]: Интерфейсы
От: Dracula_DIS Россия  
Дата: 05.03.07 16:26
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Dracula_DIS, Вы писали:


D_D>>Вроде полее понятно описал


N>Я бы так не сказал...

Ну, я мог бы прописать enum так:
    public interface IEngine
    {
                enum InfoFlag { }
        // Methods
        void AppentInfo(String Text, String From, InfoFlag Flag);

        // Properties
        IrcClient Client { get; }
        IrcIdentifySystem IdentSys { get; }
    }

И реализовывать IEngine так:
    public class EnginePlugIn : IEngine
    {
            public enum InfoFlag {...}
            public void AppentInfo(String Text, String From, InfoFlag Flag){...}
            и т.д.
        }

Но как мне в таком случае использовать перечисление InfoFlag в другом классе находящимся в этом же namespace но не реализующим интерфейс IEngine...??
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Say I...
Re[5]: Интерфейсы
От: nikov США http://www.linkedin.com/in/nikov
Дата: 05.03.07 17:34
Оценка:
Здравствуйте, Dracula_DIS, Вы писали:

D_D>Ну, я мог бы прописать enum так:

D_D>
D_D>    public interface IEngine
D_D>    {
D_D>                enum InfoFlag { }
D_D>


Интерфейс в C# не может содержать вложенных типов (в частности, перечислений).
Re: Интерфейсы
От: Igor Trofimov  
Дата: 06.03.07 16:19
Оценка:
Я кажется понял о чем он...

Объяви свое перечисление ВНЕ всех классов. Но в той же сборке, что и интерфейсы. Используй везде.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.