ограничения для поля типа Type

Shocker.Pro
Дата: 08.07.2014 16:54:05
То ли я очень сильно затупил, то ли я спрашиваю ерунду
В общем мне нужно объявить поле
public Type MyType { get; set; }
но ограничить только теми типами, которые реализуют определенный интерфейс
что-то типа
public typeof(IMyInterface) MyType { get; set; }
это можно как-то сделать?
Konst_One
Дата: 08.07.2014 16:56:43
сделай класс на основе нужных интерфейсов

class Mtype: base(IMyInterface)
{

...

}


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

public Mtype MyType { get; set; }
buser
Дата: 08.07.2014 17:00:29
Либо хенерики c where T : IMyInterface, либо public IMyInterface MyType { get; set; }
buser
Дата: 08.07.2014 17:01:51
Ой... не так понял... Или наоборот так?
ЕвгенийВ
Дата: 08.07.2014 17:08:37
    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;
            }
        }
    }
Shocker.Pro
Дата: 08.07.2014 17:11:47
buser
либо public IMyInterface MyType
мне нужен не IMyInterface, а typeof(IMyInterface)
buser
Либо хенерики c where T : IMyInterface
как? в результате я все равно получаю IMyInterface вместо typeof(IMyInterface)
Konst_One
class Mtype: base(IMyInterface)
это что за запись? ": base" применяется к конструктору, а не к классу.
Да и не то это.
Задача: один модуль должен реализовать интерфейс, а затем передать его другому модулю, чтобы тот другой мог создать его экземпляр.
Впрочем, видимо это логично сделать через Func и лямбду...
Shocker.Pro
Дата: 08.07.2014 17:13:01
ЕвгенийВ, да, я об этом думал, но поле все равно получается Type и его надо будет приводить потом...
Сделаю по-другому, спасибо.
Konst_One
Дата: 08.07.2014 17:14:13
class Mtype: IMyInterface
{
...
}


копипаст не оттуда =)
ЕвгенийВ
Дата: 08.07.2014 17:17:04
Shocker.Pro
ЕвгенийВ, да, я об этом думал, но поле все равно получается Type и его надо будет приводить потом...
Сделаю по-другому, спасибо.

К чему приводить? К Type? :)
Arm79
Дата: 08.07.2014 17:36:18
Shocker.Pro
public Type MyType { get; set; }

public IMyInterface MyType { get; set; }