【发布时间】:2016-04-06 17:00:24
【问题描述】:
我创建了一个ILogger 接口 和一个实现ILogger 的ListViewLogger 类,现在ILogger 有一个不应该存在的方法(SetListViewReference),因为不是全部记录器将记录到 ListView,我不知道将它放在哪里,因为我正在做 依赖注入 我需要那个方法,所以我应该怎么做?谢谢!
using System;
using System.Windows.Forms;
namespace AutoTweet
{
public interface ILogger
{
void Log(string text);
void SetListViewReference(ListView listview);
}
public class ListViewLogger : ILogger
{
private ListView _lvLog;
public void Log(string text)
{
_lvLog?.Items.Add(makeLvi(text));
}
public void SetListViewReference(ListView listview)
{
_lvLog = listview;
}
private ListViewItem makeLvi(string text)
{
ListViewItem ret = new ListViewItem { Text = DateTime.Now.ToString() };
ret.SubItems.Add(text);
return ret;
}
}
}
【问题讨论】:
-
那个方法看起来像是
listviewlogger的构造函数 -
@miparnisari 我考虑过从构造函数接受列表视图引用,但我不能,因为 DI,我没有列表视图的范围。
-
应该存在接口以支持客户要求。 客户端什么时候需要调用
SetListViewReference? -
@MarkSeemann 我的 ListViewLogger 类如何在没有引用 ListView 的情况下记录我的应用程序中发生的事件?
-
...让它自己创建它,或者通过它的构造函数注入它...同时,请考虑一下:*.com/a/7906547/126014
标签: c# dependency-injection interface