I have referenced one DLL (I have source code of this) say Dll_A in which there is a function
private void uploadPic(int a)
In my main project, I have a function say
private void passMe(int b)
{
}
I need to pass the above function (passMe) to uploadPic function in Dll_A, how can I do that? Is it possible?
I am able to use functions of the Dll_A from my main project, so instantiating isn’t a problem, I just need a way to pass function.
===
Thanks, giving it a try. If some can edit code below
//code in main project picbackman.cs
public delegate void delObj(int v);
private void uploadSome(string path, string fName, string str)
{
delObj del1 = new delObj(updatePValue);
UploadFileResponse response = boxProvider1.UploadFiles(args1, folderString, ((Picbackman.BoxProvider.delObj)( del1)));
}
//code in different dll which is referenced in main project //Dll_A
public delegate void delObj(int v);
public UploadFileResponse UploadFiles(string[] filePathes,string folderId, delObj d)
{}
First of all your method will need to accept a delegate as one of it’s parameters. That would be something like
at another point declare anothe method or function
First of all notice that the access modifier has changed. if they are not in the same class you will need to be able to access one from the other so they can’t both be private and since they are in different assemblies internal won’t work either.
when you need the delegate do like this
notice that the method is used with out arguments. When using a method without arguments the compiler will try and convert it to a suitable delegate.
I’d recommend you not to use
delegatebut stick with Func/Action they are delegates but more genericyou can’t pass a del1 where a DelObj2 is needed even though you use the same method for each. You will not have that issue if you use Action/Function
The reason is that DelObj1 and DelObj2 are two distinct classes with the same base class Ie they are siblings in the type tree. Using
Actionthe type is the same for both del1 and del2