簡體   English   中英

注入合適的class C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM