Sử dụng Autofac, tôi có thể đăng ký một lớp học để giải quyết đối với một giao diện sử dụng tiêm sở hữu, sử dụng đoạn mã sau:Làm thế nào để tiêm tên phụ thuộc như một tham số constructor
builder.RegisterType<Log4NetAdapter>()
.As<ILogger>()
.PropertiesAutowired()
.InstancePerDependency();
Tuy nhiên, lớp Log4NetAdapter
tôi có một tham số constructor yêu cầu tên của lớp gọi. Bằng cách này, tôi có thể ghi lại các sự kiện dựa trên tên của lớp gọi.
public class Log4NetAdapter : ILogger
{
private readonly ILog _logger;
public Log4NetAdapter(string logName)
{
_logger = LogManager.GetLogger(logName);
}
...
}
Làm thế nào tôi có thể tiêm tên (ví dụ: typeof(dependency).Name
) của sự phụ thuộc vào lớp constructor tài sản tiêm cho rằng mỗi phụ thuộc sẽ có Log4NetAdapter
dụ riêng của mình?
Khi bạn cần tên của lớp trong logger nó thường là một dấu hiệu của việc quá nhiều đăng nhập vào ứng dụng. Cân nhắc xem xét kỹ thiết kế ứng dụng của bạn. [Câu trả lời SO này chi tiết] (http://stackoverflow.com/a/9915056/264697) về quá nhiều ghi nhật ký. – Steven
@Steven Đó là một bài viết tuyệt vời và có, có một khả năng tôi cần phải sửa đổi cách tôi đăng nhập. – Digbyswift