powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ограничения для поля типа Type
24 сообщений из 24, страница 1 из 1
ограничения для поля типа Type
    #38690833
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То ли я очень сильно затупил, то ли я спрашиваю ерунду
В общем мне нужно объявить поле
Код: c#
1.
public Type MyType { get; set; }

но ограничить только теми типами, которые реализуют определенный интерфейс
что-то типа
Код: c#
1.
public typeof(IMyInterface) MyType { get; set; }

это можно как-то сделать?
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690840
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделай класс на основе нужных интерфейсов

Код: c#
1.
2.
3.
4.
5.
6.
class Mtype: base(IMyInterface)
{

...

}



добавляй его поле

Код: c#
1.
public Mtype MyType { get; set; }
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690849
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо хенерики c where T : IMyInterface, либо public IMyInterface MyType { get; set; }
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690851
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой... не так понял... Или наоборот так?
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690859
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    public class Test<T> 
    {
        Type _MyType;
        public Type MyType
        {
            get
            {
                return _MyType;
            }
            set
            {
                if (value == null)
                    throw new ArgumentNullException("value");
                if (value.GetInterface(typeof(T).Name) == null)
                {
                    throw new ArgumentException();
                }
                _MyType = value;
            }
        }
    }
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690864
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserлибо public IMyInterface MyTypeмне нужен не IMyInterface, а typeof(IMyInterface)
buserЛибо хенерики c where T : IMyInterfaceкак? в результате я все равно получаю IMyInterface вместо typeof(IMyInterface)
Konst_One
Код: c#
1.
class Mtype: base(IMyInterface)

это что за запись? ": base" применяется к конструктору, а не к классу.
Да и не то это.
Задача: один модуль должен реализовать интерфейс, а затем передать его другому модулю, чтобы тот другой мог создать его экземпляр.
Впрочем, видимо это логично сделать через Func и лямбду...
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690867
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ, да, я об этом думал, но поле все равно получается Type и его надо будет приводить потом...
Сделаю по-другому, спасибо.
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690868
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
class Mtype: IMyInterface
{
...
}



копипаст не оттуда =)
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690873
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЕвгенийВ, да, я об этом думал, но поле все равно получается Type и его надо будет приводить потом...
Сделаю по-другому, спасибо.
К чему приводить? К Type? :)
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690895
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Код: c#
1.
public Type MyType { get; set; }


public IMyInterface MyType { get; set; }
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690901
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, тоды только так, как ЕвгенийВ написал... но каку-то фигню вы делаете... как в общем звучит задача?
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690907
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserShocker.Pro, тоды только так, как ЕвгенийВ написал... но каку-то фигню вы делаете... как в общем звучит задача? 16276782
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690918
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proмне нужен не IMyInterface, а typeof(IMyInterface)
Shocker.Proно поле все равно получается Type и его надо будет приводить потом..
Так куда вы собитраетесь приводить? К какому типу?

Shocker.ProЗадача: один модуль должен реализовать интерфейс, а затем передать его другому модулю, чтобы тот другой мог создать его экземпляр.
Ну так в чем дело? Не можете просто интерфейс передать? зачем мучаться то?
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690927
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Ну так в чем дело? Не можете просто интерфейс передать? зачем мучаться то?Дык эта. Можно экземпляр класса, реализующего интерфейс. Вопрос в том, как передать при желании сам интерфейс. То есть как объявить тип параметра или тип поля. Можно объявить его как Type, но в этом случае тогда и понадобится приведение, когда нужно будет с ним работать.
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690928
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

то есть вынести описание интерфейса в отдельную сборку и юзать ее двумя разными модулями нельзя?
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690943
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть Модуль1, он реализует IMyInterface
Есть Модуль2, он работает с конкретной реализацией IMyInterface, сделанной Модулем1
Для этого Модуль2 должен каким-то образом получить ссылку на реализацию (не на экземпляр), которую сделал Модуль1, вот я и пытаюсь ее передать.

Я уже осознал, как сказал выше, что я попытался сделать велосипед и лучше воспользоваться делегатом, так что дальнейшая дискуссия носит теоретический характер.
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690953
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProДля этого Модуль2 должен каким-то образом получить ссылку на реализацию (не на экземпляр), которую сделал Модуль1, вот я и пытаюсь ее передать.
Вам готовят что-нибудь слова IoC и DI?

Примеры: Application Unity Blocks, MEF, MAF, Spring, Castle Windsor, многие другие...
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690967
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
не могу понять, зачем вам тип в чистом виде? ( интерфейса) вы никогда не создадите объект этого типа,ну им и не воспользуетесь,
конечно если исключить динамическое создание типа, орм что ли мастерите.?
зы каждый девелопер должен посадить зрение, построить велосипед и вырастить репозиторий
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690968
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Вам готовят что-нибудь слова IoC и DI?Говорят. Практического опыта маловато, поэтому сразу не сообразил.
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690978
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степине могу понять, зачем вам тип в чистом виде? ( интерфейса) вы никогда не создадите объект этого типа,ну им и не воспользуетесь,да не самого интерфейса тип, а тип реализации интерфейса.

Еще раз повторю самого себяShocker.Proто ли я спрашиваю ерундуShocker.ProВпрочем, видимо это логично сделать через Func и лямбду...Shocker.ProЯ уже осознал, как сказал выше, что я попытался сделать велосипед


кстати, а если я хочу передать статический класс через делегат, ведь я не могу создать его экземпляр, как быть? или опять глупость?
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690982
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proкстати, а если я хочу передать статический класс через делегат, ведь я не могу создать его экземпляр, как быть? или опять глупость?

А зачем вам вообще статические классы? Да, через делегат их не передать. Но у них, как бы, другое назначение.
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38690988
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да получается, видимо, так - хочу создать типа фабрику в Модуле2
А Модуль1 должен этой фабрикой воспользоваться.
При этом Модуль1 не знает заранее точный тип класса фабрики, знает только интерфейс, который она реализует.
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38691004
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
х.з
делегируйте все определения в модуль приемник,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 class MyModule
    {       
        public MyModule(object o)
        {
            if (o is IMyInterface)
            {    
            }
            else if (o is IMyInterfaceFoo)
            {               
            }
            else
            {
                throw new ArgumentException("pshn");
            }                           
        }
    }
...
Рейтинг: 0 / 0
ограничения для поля типа Type
    #38691008
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да можно, просто как-то некрасиво
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ограничения для поля типа Type
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]