Search code examples
c#functionclassprivateaccess-specifier

How to access private function of a class in another class in c#?


I am new to c# programming and i know public data member of class is accessible from another class.Is there any way i can access private function from another class?

This is what i have tried.please help me out.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication7
{
    class Program
    {
        private class Myclass
        {
            private int Add(int num1, int num2)
            {
                return num1 + num2;
            }
        }
        static void Main(string[] args)
        {
            Myclass aObj = new Myclass();
            //is there any way i can access private function
        }
    }
}

Solution

  • Hi you can use reflection to get any component of a class.

    here is one demo. Try it

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    
    namespace ExposePrivateVariablesUsingReflection
    {
        class Program
        {
            private class MyPrivateClass
            {
                private string MyPrivateFunc(string message)
                {
                    return message + "Yes";
                }
            }
    
            static void Main(string[] args)
            {
                var mpc = new MyPrivateClass();
                Type type = mpc.GetType();
    
                var output = (string)type.InvokeMember("MyPrivateFunc",
                                        BindingFlags.Instance | BindingFlags.InvokeMethod |
                                        BindingFlags.NonPublic, null, mpc,
                                        new object[] {"Is Exposed private Member ? "});
    
                Console.WriteLine("Output : " + output);
                Console.ReadLine();
            }
        }
    }