Ninject: как получить унаследованный тип вместо базового типа, если унаследованный тип помечен атрибутомC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ninject: как получить унаследованный тип вместо базового типа, если унаследованный тип помечен атрибутом

Сообщение Anonymous »

Как мне получить унаследованный тип вместо базового типа, если унаследованный тип помечен атрибутом?
Можем ли мы сделать это с помощью Ninject или нет? Вот что у меня есть:
static void Main(string[] args)
{
IKernel kernel = new StandardKernel();

// use Method which return properly type
kernel.Bind().ToMethod(context => SOMEMETHOD());

// should be return DerivedClass
BaseClass derived = kernel.Get();
BaseClass1 derived1 = kernel.Get();

// The result should be:
derived.WhoIAm(); //--> "DerivedClass"
derived1.WhoIAm(); //--> "DerivedClass1"
}

// method which resolve this
static object SOMEMETHOD()
{
// return derived class which marked by
// SomeAttribute where base class that which we use in kernel.Get
}


Базовые классы
class BaseClass : IBase
{
public virtual void WhoIAm()
{
Console.Write(this.GetType());
}
}

class BaseClass1 : IBase
{
public virtual void WhoIAm()
{
Console.Write(this.GetType());
}
}

Наследуемые классы. SomeAttribute — атрибут, обозначающий тип, который следует создать
[SomeAttribute]
class DerivedClass : BaseClass
{
public override void WhoIAm()
{
Console.Write(this.GetType());
}
}

Другие производные классы, наследующие от BaseClass1
[SomeAttribute]
class DerivedClass1 : BaseClass1
{
public override void WhoIAm()
{
Console.Write(this.GetType());
}
}
class SomeAttribute : Attribute {}

interface IBase
{
void WhoIAm();
}


Подробнее здесь: https://stackoverflow.com/questions/397 ... -marked-by
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • В чем разница между атрибутом класса и атрибутом экземпляра в Python? [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    73 Просмотры
    Последнее сообщение Anonymous
  • Как передать Dispatcher в класс через конструктор Ninject
    Гость » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Гость
  • Ninject – как выполнить IOC с классом, используемым в цикле Parallel.ForEach
    Anonymous » » в форуме C#
    0 Ответы
    84 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Ninject с несколькими привязками
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Ninject с несколькими привязками
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»