Объявляю public enum в namespace, как для него написать интерфейс ???
Тоесть плагин должен знать что у меня структура приложения такая:
namespace EnginePlugInSystem
{
public enum InfoFlag {...}
public class EnginePlugIn
{
...
}
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Dracula_DIS, Вы писали:
D_D>Объявляю public enum в namespace, как для него написать интерфейс ???
Перечисления (enums) реализуют только следующие интерфейсы:
IComparable, IFormattable, IConvertible
Здравствуйте, 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>>
Здравствуйте, 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>>
Здравствуйте, Dracula_DIS, Вы писали:
D_D>Ну, я мог бы прописать enum так:
D_D>D_D> public interface IEngine
D_D> {
D_D> enum InfoFlag { }
D_D>
Интерфейс в C# не может содержать вложенных типов (в частности, перечислений).
Я кажется понял о чем он...
Объяви свое перечисление
ВНЕ всех классов. Но в той же сборке, что и интерфейсы. Используй везде.