Я, наверное, просто толстый, но не могу понять, что здесь делать ...
У меня есть библиотека, которую я пытаюсь создать, которая будет иметь виртуальную функцию, которую пользователь может использовать для создания пользовательского обработчика ошибок для последующего вызова в коде. Одна из главных ошибок, с которыми я сталкиваюсь, заключается в том, что эти ошибки будут храниться в коллекции для случайного вызова.
Вот какой-то псевдокод
class Error
{
string Error {get; set;}
int ErrorCode {get; set;}
public void ErrorFunction(params obj[] arrParams);
}
class program
{
List<Error> errorlist = new List<Error>();
static void Main(string[] args)
{
initList();
errorlist[0].ErrorFunction("Sometext");
}
public void initList()
{
Error err = new Error();
err.ErrorFunction = MyOverloadedError;
errorlist.add(err);
}
public void MyOverloadedError(params obj[] arrObjects)
{
Console.WriteLine(arrObjects);
}
}
Кажется, я помню, что смог сделать это просто с
void * и вызов с использованием addressof для назначения вызываемой функции.
Как я уже сказал, возможно, я хладнокровен, я знаю, что должен использовать делегата, но я не могу понять, как определить делегата, где он существует, в экземпляре класса, а не как статический член класса ,
для повторения (так как я устал и не уверен, что делаю это ясно или просто более запутанно), я хочу сделать функцию-член, которой можно назначить пользовательскую функцию.
так что в основном я могу сделать следующее
Error myError = new Error();
myError.ErrorFunction = SomeCustomFunction;
...
myError.ErrorFunction("Some Parameters"); //effectively calling some static function elsewhere
Заранее спасибо! мой мозг болит слишком сильно ...