簡體   English   中英

使用接口調用類中的結構

[英]Using an interface to call a struct that is in a class

我正在學習如何使用模擬解耦某些C#代碼,以便可以對其進行單元測試。 我在http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/DEV-B207#fbid=上找到了很好的介紹。 我遇到的問題是其中一個類具有結構。 如何使用該類的接口訪問結構?

public class Config : CurveTracer.IConfig
{

    public struct AppConfig
    {
        public string cfgVersion;
        public string cfgSerial;
     };
     public bool Init() 
}

我可以使用IConfig.Init()進入Init(function)。 是否有使用AppConfig的類似方法。 我嘗試了IConfig.AppConfig,但是那不起作用。

這是IConfig

public interface IConfig
{
    bool Init();
    bool Load();
    bool LoadAppCfg();
    void LoadDefaults();
    string ReadConfigFile();
    void Save();
    void UpdateConfig(string key, string value);
    bool WriteConfigFile(string data);
}`

接口無法指定實現該接口的所有類都具有內部類型。

您將需要使用具體類的名稱來引用內部類型的類型名稱(從外部類型的范圍之外)。

您是否認為Config具有AppConfig類型的屬性? 如果是這樣,則需要將其公開為屬性:

public class Config : CurveTracer.IConfig
{
    public bool Init()
    {
        return true;
    }

    public AppConfig AppConfig { get; set; }
}

public class CurveTracer
{
    public interface IConfig
    {
        bool Init();

        AppConfig AppConfig { get; set; }
    }
}

// Are you sure this needs to be a struct? Just add cfgVersion and cfgSerial to CurveTracer.IConfig or make it a class.
public struct AppConfig
{
    public string cfgVersion;
    public string cfgSerial;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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