我需要扫描具有特定属性的类的所有程序集(或从抽象类 ColorTest 继承的类),并自动将它们绑定到 ColorTest 。 然后我需要实例化并枚举 ColorTest
的所有实现装配1:
public abstract class ColorTest {
public abstract string GetColorString();
}
大会2:
//[ColorImplementation] // attributes are not necessary
public class BlueColor() : ColorTest {...}
大会3:
//[ColorImplementation] //not necessary
public class RedColor() : ColorTest {...}
大会4:
class Program{
public static Main(){
#region Problem area :)
var kernel = new StandardKernel();
kernel.Bind(x => x
.FromAssembliesMatching("*")
.SelectAllClasses()
.InheritedFrom<ColorTest>// or .WithAttribute<ObsoleteAttribute>()
.BindAllInterfaces() // I'd like to Bind it only to ColorTest
.Configure(b => b.InSingletonScope()));
#endregion
// Enumerate
kernel
.GetAll<ColorTest>()
.ToList()
.ForEach(t=>Console.WriteLine(t.GetColorString()));
}
示例是抽象&amp;简化更复杂的问题。
Ninject可以帮我处理描述的场景吗?如果是的话怎么样?
答案 0 :(得分:1)
解决方案非常简单!
我不得不更换2行:
.FromAssembliesMatching("*") -> .FromAssembliesMatching(".") //mistake
和
.BindAllInterfaces() -> .BindBase() // because I'm implementing
// abstract class, not interface
未涉及属性