我有一個靜態類,在它內部我有多個公共靜態屬性。我把這個課程當作我的全球課程。C#如何將靜態類作爲一個變量
但是現在我需要把這個類作爲變量,這樣我可以把它傳遞給另一個類進行處理的方法..
我不能實例化這個類。所以實際上我只能分配這個類中的變量。
我的理解是正確的還是我錯過了什麼?
public static class Global
{
public const int RobotMax = 2;
// GUI sync context
public static MainForm mainForm;
public static SynchronizationContext UIContext;
// Database
public static Database DB = null;
public static string localDBName = "local.db";
public static Database localDB = null;
public static Database ChangeLogDB = null;
public static string changeLogDBName = "ChangeLog.db";
}
讓我們說我有這樣一類的,我需要以某種方式保持該副本複製到另一個階級也許
public static class Global_bk
{
public const int RobotMax = 2;
// GUI sync context
public static MainForm mainForm;
public static SynchronizationContext UIContext;
// Database
public static Database DB = null;
public static string localDBName = "local.db";
public static Database localDB = null;
public static Database ChangeLogDB = null;
public static string changeLogDBName = "ChangeLog.db";
}
我需要複製來自全球的內容Global_bk。
此後,我需要兩個類的內容方法比較喜歡
static class extentions
{
public static List<Variance> DetailedCompare<T>(T val1, T val2)
{
List<Variance> variances = new List<Variance>();
FieldInfo[] fi = val1.GetType().GetFields();
foreach (FieldInfo f in fi)
{
Variance v = new Variance();
v.Prop = f.Name;
v.valA = f.GetValue(val1);
v.valB = f.GetValue(val2);
if (!v.valA.Equals(v.valB))
variances.Add(v);
}
return variances;
}
}
class Variance
{
string _prop;
public string Prop
{
get { return _prop; }
set { _prop = value; }
}
object _valA;
public object valA
{
get { return _valA; }
set { _valA = value; }
}
object _valB;
public object valB
{
get { return _valB; }
set { _valB = value; }
}
}
所以我的主要形式,我怎麼去調用比較方法並傳遞靜態全局類中?
示例:extentions.DetailedCompare(Global,Global_bk)?當然,這會給我一個錯誤,因爲我不能將類型作爲變量傳遞。
請幫助我,這是推動我堅果...
當然。但是,我如何訪問所有成員/變量等的類本身呢? – CJC 2014-10-20 04:58:21
靜態類的所有成員都是靜態的...如果你想訪問它們使其成爲公共或內部。然後使用類名稱。成員(方法屬性...) – 2014-10-20 05:01:28
是的,我也明白這一點。它是公開的。但我需要將類本身作爲變量傳遞給函數/成員的參數。我不想單獨傳遞每個變量/成員/屬性/屬性。我基本上想把它的內容複製到另一個相同的類,以便我可以在兩者之間進行比較。 – CJC 2014-10-20 05:05:44