C# 反射獲得類名,私人方法,動態執行方法,返回多個值

來源:互聯網
上載者:User
我的廣告單元,有空點一下哦,謝謝!

直接上例子了,廢話不多說,大家一看就懂。

代碼內容:

實體類:

public
class userinfo
{
public userinfo()
{ }

#region 成員
private int _userid;
private string
_username;
private string _password;
private int
_roleid;
private string _telephone;
private string
_usersex;
private string _address;
private string
_email;
private string _logintime;
private string
_createtime;
#endregion


#region 屬性
public int userid
{
get { return
_userid; }
set { _userid = value; }
}

public string username
{
get { return _username;
}
set { _username = value; }
}

public string password
{
get { return _password;
}
set { _password = value; }
}

public int roleid
{
get { return _roleid;
}
set { _roleid = value; }
}

public string telephone
{
get { return _telephone;
}
set { _telephone = value; }
}

public string usersex
{
get { return _usersex;
}
set { _usersex = value; }
}

public string address
{
get { return _address;
}
set { _address = value; }
}

public string email
{
get { return _email;
}
set { _email = value; }
}

public string logintime
{
get { return _logintime;
}
set { _logintime = value; }
}

public string createtime
{
get { return _createtime;
}
set { _createtime = value; }
}

private string ReturnAutoID()
{
return
"userid";
}
#endregion

}

反射方法類:
using
System;
using System.Collections.Generic;
using System.Linq;
using
System.Text;
using System.Reflection;namespace
Reflecti
{
public class GetModelInfo
{
///
<summary>
/// 通過反射獲得對象名稱和自動成長ID
///
</summary>
/// <param
name="obj">對象</param>
///
<returns>返回string數組</returns>
public static string[]
Core(Object obj)
{
string[] str=new
string[2];
Type T = obj.GetType();
MethodInfo mi =
T.GetMethod("ReturnAutoID",

BindingFlags.NonPublic
|
BindingFlags.Instance,
null, new
Type[] { }, null);

//通過反射執行ReturnAutoID方法,返回AutoID值
string str1 = mi.Invoke(obj,
null).ToString();
str[1] = str1;
str[0] =
T.Name.ToString();
//返回該Obj的名稱以及ReturnAutoID的值

return str;
}
}
}

調用:
userinfo _userinfo =
new userinfo();
MessageBoxShow("實體類類名:"GetModelInfo.Core(_userinfo)[1] + "
自動ID:"+GetModel.Core(_userinfo)[0]);

OK,趕快測試下吧,通過這個例子你可以舉一反三,獲得很多其他的收穫

其他知識點:

使用 Assembly 定義和載入程式集,載入在資訊清單中列出的模組,以及從此程式集中尋找類型並建立該類型的執行個體。

使用 Module 瞭解如下的類似資訊:包含模組的程式集以及模組中的類等。您還可以擷取在模組上定義的所有全域方法或其他特定的非全域方法。

使用 ConstructorInfo 瞭解以下資訊:建構函式的名稱、參數、存取修飾詞(如 public 或 private)和實現詳細資料(如
abstract 或 virtual)等。使用 Type 的 GetConstructors 或 GetConstructor
方法來調用特定的建構函式。

使用 MethodInfo 瞭解以下資訊:方法的名稱、傳回型別、參數、存取修飾詞(如 public 或 private)和實現詳細資料(如
abstract 或 virtual)等。使用 Type 的 GetMethods 或 GetMethod 方法來調用特定的方法。

使用 FieldInfo 瞭解以下資訊:欄位的名稱、存取修飾詞(如 public 或 private)和實現詳細資料(如
static)等;並擷取或設定欄位值。

使用 EventInfo 來瞭解如下的類似資訊:事件的名稱、事件處理常式資料類型、自訂屬性、宣告類型和反射類型等;並添加或移除事件處理常式。

使用 PropertyInfo 來瞭解如下的類似資訊:屬性的名稱、資料類型、宣告類型、反射類型和唯讀或可寫狀態等;並擷取或設定屬性值。

使用 ParameterInfo 來瞭解如下的類似資訊:參數的名稱、資料類型、參數是輸入參數還是輸出參數,以及參數在方法簽名中的位置等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.