[英]Inject appropriate class C#
我需要一些關於如何更好地組織我的課程的建議。
我有通用接口和 class:
public interface IReader
{
IEnumerable<Change> ReadChanges(string log, int count, string from);
}
public class Reader : IReader
{
private readonly MongoDb _db;
public StageChangesReader(MongoDb db)
{
_db = db;
}
public IEnumerable<Change> ReadChanges(string log, int count, string from)
{
//....
}
}
然后我制作了其他三個使用這個閱讀器的類(它們實現了相同的方法,唯一的區別是我通過的日志)是這樣的:
public class SpecificReader
{
private readonly IReader _reader;
public SpecificReader(IReader reader)
{
_reader = reader;
}
public IEnumerable<Change> ReadChanges(int count, string from)
{
return _changesReader.ReadChanges("specific log", count, from);
}
}
最后在第三個 class 我想注入這些,並根據 function 中使用特定日志記錄的類型:
var changes = _type == MyType.SpecificReader
? _specificReader.ReadSpecific(_count, from)
: _somethingElse.ReadSomethingElse(_count, from);
我想讓這個更通用,而不是if
我可以通過這個通用方法。
所以它會像:
var changes = _Reader.ReadChanges(_count, from)
那可能嗎?
考慮在您的接口中添加一個方法並在派生的具體類中覆蓋它,這樣您就可以在所有這些類上調用 IConcreteClass.LogMethod() ,使它們對它們的日志方式負責。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.