1

it may be a duplicate of

How to dynamically call a class' method in .NET?

and of

how to achieve calling a function dynamically, thats right the function to be called is decided from database values, using c#

but the above two have solutions which as the answers said are complicated, not for a beginner i guess.

and

both solutions contain "type" which from the code i think is for defining the class the method belongs to.

like

static void caller(String myclass, String mymethod)
    {
        // Get a type from the string 
        Type type = Type.GetType(myclass);
        // Create an instance of that type
        Object obj = Activator.CreateInstance(type);
        // Retrieve the method you are looking for
        MethodInfo methodInfo = type.GetMethod(mymethod);
        // Invoke the method on the instance we created above
        methodInfo.Invoke(obj, null);
    }

but my initial web site, only contains one class common to all the functions,

a database which has "function name" "func id"

supposed :- function name exactly same as that in code

i only want to achieve the following

  • get the string value of function name according to the id mentioned in the text box

  • now call that function, whose name is in the string variable

problem

the methodinfo, needs the "type.GetMethod(mymethod);"

..

2 Answers 2

3

In order to call a function you need to specify the type this function is declared on. If all functions you are going to call are declared on a common class you could do the following:

static void CallFunc(string mymethod)
{
    // Get a type from the string 
    Type type = typeof(TypeThatContainsCommonFunctions);

    // Create an instance of that type
    object obj = Activator.CreateInstance(type);

    // Retrieve the method you are looking for
    MethodInfo methodInfo = type.GetMethod(mymethod);

    // Invoke the method on the instance we created above
    methodInfo.Invoke(obj, null);
}

If the functions you are going to call are static you don't need an instance of the type:

static void CallFunc(string mymethod)
{
    // Get a type from the string 
    Type type = typeof(TypeThatContainsCommonFunctions);

    // Retrieve the method you are looking for
    MethodInfo methodInfo = type.GetMethod(mymethod);

    // Invoke the method on the type
    methodInfo.Invoke(null, null);
}
Sign up to request clarification or add additional context in comments.

4 Comments

with possibly some null checking! ;)
what do you mean by functions are static ?, how can a function be dynamic? please explain this point, will be great ful thanks
1

I see 2 solutions:

  1. you need to map function id to real function name
  2. call type.GetMethods() to get list of all methods and choose right one

1 Comment

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.