【发布时间】:2016-07-25 06:17:30
【问题描述】:
我有这样的界面
public interface IPerson { }
和实现
public class Fireman : IPerson
{
public string Name { get; set; }
public bool WithAssignedTruck { get; set; }
...
}
public class Pilot : IPerson
{
public string Name { get; set; }
public int Age { get; set; }
...
}
并将它们传递给构造函数
public class Registration : IRegistration
{
private readonly Fireman _fireman;
private readonly Pilot _pilot;
public Registration(Pilot pilot, Fireman fireman)
{
this._fireman = fireman;
this._pilot = pilot;
}
}
下面是初始化方法的样子。
public T PopulateProfile<T>() where T : IPerson, new()
{
var personProfile = Activator.CreateInstance<T>();
...
return personProfile;
}
请注意,此代码只是一个示例。
我有一个方法可以设置来自数据库的这些类的每个属性的值。我需要做的是,当我向 Ninject 询问任何实现 IPerson 接口的类时,Ninject 应该首先执行该方法,因此,Ninject 将返回一个已初始化的类。希望你能帮我一把。谢谢。
【问题讨论】:
-
each
T : IPerson的初始化逻辑是否相同?这是什么? -
是的,初始化将获取实例的属性,然后用数据库中的值填充。
-
这个工作
kernel.Bind<Pilot>().ToMethod(ctx => ctx.Kernel.Get<IProfileService>().PopulateProfile<Pilot>());但我需要它是通用的。