[Mono-dev] Implicit Polymorphy Question

Samuel Abels newsgroups at debain.org
Thu Sep 22 11:27:00 EDT 2005


Hello,

Consider this class:

-------------------------
public class FuncCaller
{
 public delegate void Function(object args);
 public Function function;
 public object   args;

 public FuncCaller (Function function_, object args_)
 {
  function = function_;
  args     = args_;
 }

 public void Call ()
 {
  if (!function || !args)
   return;
  function(args);
 }
}
-------------------------

The above class is supposed to hold a function, including all arguments,
and execute the call later.
However, I am looking for a way to pass *any* type of argument to the
constructor, rather then only variables of type "object". E.g.:

------------------
[...]
public myfunc1 (string str) { ... }
public myfunc2 (ArrayList lst) { ... }
[...]
FuncCaller caller1 = new FuncCaller(myfunc, "test");
FuncCaller caller2 = new FuncCaller(myfunc, myarraylist);
[...]
caller1.Call();
caller2.Call();
------------------

This produces errors like

Cannot convert implicitly from `object' to `System.Collections.ArrayList'

Of course, I could cast the value, but is there a way to make this work
implicitly?

I have only found the .NET 2.0 "generics" that might help, but
apparently Mono does not yet have support for them in regular releases
(though I found a note that it is available in CVS already).
Is there a (typesafe) way to accomplish something similar without using
generics?

Thanks,
-Samuel



More information about the Mono-devel-list mailing list