【发布时间】:2019-05-12 07:38:25
【问题描述】:
我有如下所示的界面。问题出在AddLogger() 方法中,我不能只使用Loggers.Add(logger);
public interface INotificationFactory
{
IEnumerable<ILogger> Loggers
{
get;
set;
}
void AddLogger(ILogger logger);
void DoLog(EMsgType msgType, string msg);
IEnumerable<ILogger> GetLoggers();
}
接口实现:
public class NotificationFactory : INotificationFactory
{
public IEnumerable<ILogger> Loggers // read-write instance property
{ get; set; }
public NotificationFactory()
{
Loggers = new List<ILogger>();
}
public void AddLogger(ILogger logger)
{
Loggers.Add(logger);
}
public void DoLog(EMsgType msgType, string msg)
{
foreach (var logger in Loggers)
{
logger.Write(msgType, msg);
}
}
public IEnumerable<ILogger> GetLoggers()
{
return Loggers;
}
}
【问题讨论】:
-
Loggers.ToList().Add(logger);
-
hmm 但是 Loggers 变成 List 而不是 IEnumerable?这是正确的方法吗?
-
@Rahul 这只会将一个项目添加到要立即进行垃圾收集的列表中。
标签: c#