Определение использования определенного интерфейса - C#
Формулировка задачи:
Всем привет, нужна помощь.
есть такой код
Внутреннею реализация структур вам не нужно знать, у интерфейсов ее нет!
Для динамической работы нужно реализовать определения какой структурой я пользуюсь.
для примера
так вот нужно знать каким образом(адекватным способом, а без всякий колен) можно определить какую структуру я использую
interface IDevice
{}
interface IGroup
{}
interface ITag
{}
public struct Device : IDevice
{
IGroup Groups;
...
public Device(IGroup groups)
{
Groups = groups;
}
}
public struct Group : IGroup
{
...
}
public struct Tag : ITag, IGroup
{
...
}IDevice groupDevice = new Device(new Group()); //Может быть так IDevice tagDevice = new Device(new Tag()); // Может быть и так
Решение задачи: «Определение использования определенного интерфейса»
textual
Листинг программы
public interface IDevice
{
Type DeviceType { get; }
}
public interface IGroup
{ }
public interface ITag
{ }
public struct Device : IDevice
{
IGroup Groups;
public Device(IGroup groups)
{
Groups = groups;
}
public Type DeviceType
{
get
{
return this.Groups.GetType();
}
}
}
public struct Group : IGroup
{
}
public struct Tag : ITag, IGroup
{
}
public class Example
{
public Example()
{
IDevice groupDevice = new Device(new Group()); //Может быть так
IDevice tagDevice = new Device(new Tag()); // Может быть и так
if (groupDevice.DeviceType == typeof(Group))
{
}
if (groupDevice.DeviceType == typeof(Tag))
{
}
if (tagDevice.DeviceType == typeof(Group))
{
}
if (tagDevice.DeviceType == typeof(Tag))
{
}
}
}