Vin*_*ius 2 c# interface class repository
我收到以下错误:
test.Services.JobService'不包含带0个参数的构造函数.
这是代码:
JobService.cs:
namespace TesteUltrafan.Services
{
public class JobService
{
private readonly IRepository _repository;
public JobService(IRepository repository)
{
_repository = repository;
}
public Job CreateJobBanker()
{
var banker = new Job();
string id = Guid.NewGuid().ToString("N");
Console.WriteLine("Novo job banker id: {0}", id);
banker.Id = id;
banker.Type = JobType.Banker;
banker.CreatedAt = DateTime.Now;
Console.WriteLine("Salvando job banker id: {0}", id);
Job jobBanker = _repository.SaveJob(banker);
return jobBanker;
}
}
}
Run Code Online (Sandbox Code Playgroud)
program.cs:
public class Program
{
public static void Main()
{
var jobService = new JobService(); <---- Here is the error.
Console.WriteLine("Creating job banker, creation:");
Job jobBanker = jobService.CreateJobBanker();
Console.WriteLine("Job banker: {0}", jobBanker);
}
}
Run Code Online (Sandbox Code Playgroud)
Job.cs:
public class Job
{
public string Id { get; set; }
public DateTime CreatedAt { get; set; }
public JobType Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
JobType.cs:
public enum JobType
{
Actor = 1,
Agricultural = 2,
Banker = 3,
EngineerCivil = 4,
Another = 5,
}
Run Code Online (Sandbox Code Playgroud)
您需要在JobService类中创建一个无参数构造函数(我不会这样做,因为那样您的类将无法正常工作 - 将不会引用任何存储库)或者最好在构造此实例时将Repository实例作为参数传递.
所以代码应该最好是这样的:
public class Program
{
public static void Main()
{
var jobService = new JobService(new Repository());
Console.WriteLine("Creating job banker, creation:");
Job jobBanker = jobService.CreateJobBanker();
Console.WriteLine("Job banker: {0}", jobBanker);
}
}
Run Code Online (Sandbox Code Playgroud)
哪里Repository应该是一个实现IRepository接口的类.没有通过这个实例你CreateJobBanker将无法工作.
虽然建议使用一些IoC容器,因为您的代码遵循Inversion of Control原则(可能您甚至不知道这一点).
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |