I have trouble using System.Func.
public Func<int> OnCreated=new Func<int>(int ASD){ Debug.Log (ASD); };
Is this the proper way to use it? I want to make a dynamic function that can be called. Also can the System.Func be serialized via XML?
I have trouble using System.Func.
public Func<int> OnCreated=new Func<int>(int ASD){ Debug.Log (ASD); };
Is this the proper way to use it? I want to make a dynamic function that can be called. Also can the System.Func be serialized via XML?
Maybe you're looking for Action<>
instead?
Action<int> myAction = myIntParam => Debug.Log(myIntParam);
myAction(myInteger);
If you want to take an input parameter, and return something, you should use Func<>
Func<int, int> myFunc = myIntParam => {
Debug.Log(myIntParam);
return 5;
};
int five = myFunc(myInteger);
Also, if you want to serialize/deserialize, you need to take it one step further. Namely, by def Func
does not really have any meaningful information for it to be serialized, you should wrap it in Expression
. You can get started by googling for "C# serialize expression", eg: https://expressiontree.codeplex.com
Just like any other thing in .NET Func is an Object. Func is an object of type Delegate.You can serialize/deserialize any serializable object. Func returns a value and can take up to 16 parameters.
The way you would use it is like this :
Func<int> w = new Func<int>(() => { return 1; });
You should first be familiar with the use of delegates. Check this : when & why to use delegates?
P.S Serializing delegates is a risky thing to do since they are pointers to functions that are inside your program.|
You can check how you can do the serialization over here : Could we save delegates in a file (C#)