0
Как получить унаследованный тип вместо Базовый тип, когда унаследованный тип, помеченный атрибутом.Ninject: Как получить унаследованный тип вместо Базовый тип, когда унаследованный тип, помеченный атрибутом
Можем ли мы сделать это с помощью Ninject или нет?
static void Main(string[] args)
{
IKernel kernel = new StandardKernel();
// use Method which return properly type
kernel.Bind<IBase>().ToMethod(context => SOMEMETHOD());
// should be return DerivedClass
BaseClass derived = kernel.Get<BaseClass>();
BaseClass1 derived1 = kernel.Get<BaseClass1>();
В результате должно быть
derived.WhoIAm(); //-- - > "DerivedClass"
derived1.WhoIAm(); //-- - > "DerivedClass1"
}
// method which resolve this
static object SOMEMETHOD(){ // return derived class wich marked by //SomeAttribure where base class that which we use in kernel.Get
}
BasesClass
class BaseClass : IBase
{
public virtual void WhoIAm()
{
Console.Write(this.GetType());
}
}
class BaseClass1 : IBase
{
public virtual void WhoIAm()
{
Console.Write(this.GetType());
}
}
Унаследованные классы. Атрибут, который промаркирован тип, который Шоуде создан
[SomeAttribure]
class DerivedClass : BaseClass
{
public override void WhoIAm()
{
Console.Write(this.GetType());
}
}
Другое Производный класс, унаследованный от BaseCalss1
[SomeAttribure]
class DerivedClass1 : BaseClass1
{
public override void WhoIAm()
{
Console.Write(this.GetType());
}
}
class SomeAttribure : Attribute {}
interface IBase
{
void WhoIAm();
}