Итак, у меня есть интерфейс, IFormLogger, который содержит метод «logData». У меня есть класс, который содержит этот интерфейс и методы интерфейса. Мой регистратор, который не зависит от каких-либо других классов, имеет объект «formOut», в котором хранится «новый класс()», который объявлен в другой программе.Запуск метода во время выполнения класса, реализующего интерфейс?
При попытке скомпилировать, я получаю «объект», не содержит определения для «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