私のコードの下に見つけてください。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;
}
}
}
表示されているように、上記のコードはコンパイルされますが、インターフェイス インスタンスを作成できないため機能しません。
IEmployee TempObject = (IEmployee)Activator.CreateInstance(typeof(Employee));
次に、このクラスはインターフェイスだけでなくクラスにも依存します...ある晴れた日の従業員クラスが従業員2になると仮定すると、2つの場所でコードが変更されます.. 1)[ServiceKnownType(typeof(MiddleWare.Classes.Employee2))]
2)IEmployee TempObject = (IEmployee)Activator.CreateInstance(typeof(Employee2));
それは避けたい。IOperationBehavior の実装で何かを行うことはできますか、またはこれを達成する Ninject の方法はありますか、それとも不可能を達成しようとしていますか?