![](/img/trans.png)
[英]Using an interface as a field type but have the base class pick the derived struct
[英]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.