onclick如何呼叫含參函式_C#如何呼叫私有成員函式,反射?
阿新 • • 發佈:2020-12-17
技術標籤:onclick如何呼叫含參函式類如何呼叫自己的私有成員非靜態成員函式的非法呼叫
問
C#中無法訪問類中私有成員函式嗎?函式“private void AcceptDetails()"可以改成”public void AcceptDetails()“可以進行,但是在”private"情況下,如何呼叫函式呢?
using System;namespace RectangleApplication{ class Rectangle { private double length; private double width; private void AcceptDetails() { Console.WriteLine("Please input length: "); length = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Please input width: "); width = Convert.ToDouble(Console.ReadLine()); } public double GetArea() { return length * width; } public void Display() { Console.WriteLine("length; {0}", length); Console.WriteLine("width: {0}", width); Console.WriteLine("area: {0}", GetArea()); } } class ExecuteRetangle { static void Main(string[] args) { Rectangle r = new Rectangle(); r.AcceptDetails(); r.Display(); Console.ReadLine(); } }}
答
新增一個public方法直接呼叫它.........
class Rectangle {publicvoidAcceptDetailsMedium(){ AcceptDetails(); } }
反射
classExecuteRetangle{ static void Main(string[] args) { Rectanglerec=newRectangle(); Type t = typeof(Rectangle); BindingFlagsflags=BindingFlags.NonPublic|BindingFlags.Instance; MethodInfomInfo=t.GetMethod("AcceptDetails",flags); ConstructorInfo magicConstructor = t.GetConstructor(Type.EmptyTypes); mInfo.Invoke(rec,null); rec.Display(); Console.ReadLine(); }}
反射簡述
反射提供描述程式集Assembly、模組Module和型別class的物件(Type 型別)。可以使用反射動態地建立型別的例項,將型別繫結到現有物件,或從現有物件中獲取型別,然後呼叫其方法或訪問器欄位和屬性。如果程式碼中使用了特性,可以利用反射來訪問它們。
文章精選1、問答(1):Sql Server觸發器怎樣防止資料重複插入
2、問答(2):Oracle判斷某人員在某地是否有超過指定時間的停留