所以我有一個IFormLogger接口,它包含一個方法「logData」。我有一個包含此接口和接口方法的類。我的記錄器被設計爲不依賴於任何其他類,它有一個對象「formOut」,它存儲在另一個程序中聲明的「new class()」。在實現接口的運行時聲明類上運行方法?
當試圖編譯時,我得到一個「'對象'不包含'logData'的定義,這是可以理解的。」
我該如何告訴編譯器它將使用的對象是否有這個接口以及與它相關的方法?
代碼:
class logger
{
public enum logOutput { CONSOLE, WINFORM, FILE };
public enum logLevel { INFO, FINE, WARN, ERR };
logOutput output;
object formOut;
public logger(logOutput outputType, object outputForm)
{
this.output = outputType;
if (!(outputForm is IFormLogger))
throw new ArgumentException();
else
this.formOut = outputForm;
}
public void log(string msg)
{
string toLog = String.Format("[{0}][INFO] {1}\n", getTime(), msg);
if (output == logOutput.WINFORM)
{
formOut.logData(toLog);
}
}
interface IFormLogger
{
void logData(string data);
}
在我的Program.cs文件,其中正在建設的記錄器(cLoggerTest的形式爲它實現IFormLogger名稱):
logger l = new logger(logger.logOutput.WINFORM, new cLoggerTest());
公共成員名稱應該是UpperCamelCase。 – SLaks
@SLaks好吧,謝謝,我是一個自學成才的程序員,所以我的格式並不總是與它應該如何相提並論 – foxbot