.NET MVC应用程序。在控制器操作中,我创建ClientsService类的实例,然后调用其方法A()。该方法创建另一个类的实例,然后调用其方法之一,但是该方法需要调用clientsService的方法...如何正确完成?
Namespace MyApp.Services
public class ClientsService
{
ApplicationDbContext db;
public ClientsService(ApplicationDbContext db)
{
this.db = db;
}
public void A()
{
int x = 5;
var instance = new SomeOtherClass(db)
instance.SomeMethod(x);
}
//returns object type name
public string getObjectTypeName(object obj)
{
return ObjectContext.GetObjectType(obj.GetType()).Name;
}
}
public class SomeOtherClass()
{
ApplicationDbContext db;
public SomeOtherClass(ApplicationDbContext db)
{
this.db = db;
}
public void SomeMethod(int i)
{
/////////////////
//I NEED TO CALL getObjectTypeName() HERE!!
/////////////////
}
}
方法getObjectTypeName()可能不应该驻留在该类上,而是应该驻留在某种全局类上(因为它可以在任何地方使用)?如果是这样,我该怎么办?还是我可以将ClientsService实例本身传递给SomeOtherClass中的方法? (类似于instance.SomeMethod(db,this))?
我在这里迷路了,感谢您的帮助
答案 0 :(得分:3)
您只需要在ClientsService
内传递对象SomeOtherClass
的实例。
public SomeOtherClass(ClientsService service, ApplicationDbContext db)
{
this.service = service;
this.db = db;
}
public void SomeMethod(int i)
{
this.service.getObjectTypeName();
}
我建议阅读更多有关“依赖项注入”的知识,以使管理依赖项的整个过程更加健壮和易于理解。