【发布时间】:2011-11-22 11:42:30
【问题描述】:
请在下面找到我的代码。 Employee类实现了IEmployee接口。
namespace MiddleWare.ServiceContracts
{
[ServiceContract(Namespace = "http://mywebsite.com/MyProject")]
public interface IMiscellaneous
{
[OperationContract]
[ServiceKnownType(typeof(MiddleWare.Classes.Employee))]
IEnumerable<IEmployee> Search_Employee
(string SearchText);
}
namespace MiddleWare.ServiceClasses
{
public class Miscellaneous : IMiscellaneous
{
public IEnumerable<IEmployee> Search_Employee
(string SearchText)
{
List<IEmployee> emp = new List<IEmployee>();
IEmployee TempObject = (IEmployee)Activator.CreateInstance(typeof(IEmployee));
TempObject.EmployeeId = "12345678";
emp.Add(TempObject);
return emp;
}
}
}
可见,上面的代码确实可以编译,但由于无法创建接口实例而无法工作。我怎样才能在这里实现 DI(依赖注入)...如果我写..
IEmployee TempObject = (IEmployee)Activator.CreateInstance(typeof(Employee));
那么这个类将不仅依赖于接口,还依赖于类...假设一个晴天Employee类变成Employee2.会有两个地方的代码更改..
1)[ServiceKnownType(typeof(MiddleWare.Classes.Employee2))]
2)IEmployee TempObject = (IEmployee)Activator.CreateInstance(typeof(Employee2));
我想避免这种情况。我们可以在 IOperationBehavior 的实现中做点什么吗?或者是否有一种 Ninject 方法可以实现这一点,或者我是否试图实现不可能?
【问题讨论】:
标签: wcf service dependency-injection ninject contract