mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
310 lines
9.5 KiB
310 lines
9.5 KiB
a) Read AppDomain
|
|
b) Read BindingPolicy
|
|
c) Change AppDomain prop
|
|
d) Add BindingPolicy
|
|
e) Change BindingPolicy
|
|
f) Remove BindingPolicy
|
|
g) Query for binding policy
|
|
|
|
//*******************************************************************************************
|
|
// I: ConfigCollection/Item
|
|
// a) Read AppDomain
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
AppDomainConfigItem appdomain = ConfigManager.GetItem("AppDomain", as);
|
|
Console.WriteLine(appdomain.ShadowCopy);
|
|
|
|
// b) Read BindingPolicy
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
IConfigCollection bindings = ConfigManager.Get("BindingPolicy", as);
|
|
// need to enable FOREACH!!!???
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
Console.WriteLine(binding.Name);
|
|
}
|
|
|
|
// c) Change appdomain property
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
ConfigManager.WriteProperty("AppDomain", as, "ShadowCopy", new Boolean(true));
|
|
|
|
// change more than one property at a time
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
ConfigManager.WriteProperty("AppDomain", as, "ShadowCopy", new Boolean(true));
|
|
ConfigManager.WriteProperty("AppDomain", as, "SharedPath", "c:\temp");
|
|
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
AppDomainConfigItem appdomain = ConfigManager.GetItem("AppDomain", as);
|
|
appdomain.ShadowCopy=False;
|
|
appdomain.SharedPath="c:\temp";
|
|
ConfigManager.WriteItem(as, appdomain);
|
|
|
|
// d) Add binding policy
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
IConfigCollection bindings = ConfigManager.Get("BindingPolicy", as);
|
|
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) ConfigManager.GetEmptyConfigItem("BindingPolicy");
|
|
|
|
bindings.Add(binding);
|
|
|
|
ConfigManager.Write(as, bindings);
|
|
|
|
// e) Change BindingPolicy
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
IConfigCollection bindings = ConfigManager.Get("BindingPolicy", as);
|
|
// need to enable FOREACH!!!???
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
binding.UseLatestBuildRevision=false;
|
|
}
|
|
|
|
ConfigManager.Write(as, bindings);
|
|
|
|
|
|
// f) Remove BindingPolicy
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
IConfigCollection bindings = ConfigManager.Get("BindingPolicy", as);
|
|
// need to enable FOREACH!!!???
|
|
String[] key = new String[3];
|
|
key[0]="g_SglAsm_SglMod1.dll";
|
|
key[1]="8e47bf1a5ed0ec84";
|
|
key[2]="*";
|
|
bindings.RemoveByKey(key);
|
|
ConfigManager.Write(as, bindings);
|
|
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
if (binding.Name=="g_SglAsm_SglMod1.dll") {
|
|
bindings.Remove(i);
|
|
break;
|
|
}
|
|
}
|
|
|
|
ConfigManager.Write(as, bindings);
|
|
|
|
// g) Query for binding policy
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
QuerySelector qs = new QuerySelector("Name=g_SglAsm_SglMod1.dll", as);
|
|
|
|
IConfigCollection bindings = ConfigManager.Get("BindingPolicy", qs);
|
|
// need to enable FOREACH!!!???
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
Console.WriteLine(binding.Name);
|
|
}
|
|
|
|
|
|
|
|
//*******************************************************************************************
|
|
// II: ConfigManager Add/Remove/Set
|
|
// a) Read AppDomain
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
AppDomainConfigItem appdomain = ConfigManager.GetItem("AppDomain", as);
|
|
Console.WriteLine(appdomain.ShadowCopy);
|
|
|
|
// b) Read BindingPolicy
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
IConfigCollection bindings = ConfigManager.Get("BindingPolicy", as);
|
|
// need to enable FOREACH!!!???
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
Console.WriteLine(binding.Name);
|
|
}
|
|
|
|
// c) Change appdomain property
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
ConfigManager.WriteProperty("AppDomain", as, "ShadowCopy", new Boolean(true));
|
|
|
|
// change more than one property at a time
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
ConfigManager.SetProperty("AppDomain", as, "ShadowCopy", new Boolean(true));
|
|
ConfigManager.SetProperty("AppDomain", as, "SharedPath", "c:\temp");
|
|
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
AppDomainConfigItem appdomain = ConfigManager.GetItem("AppDomain", as);
|
|
appdomain.ShadowCopy=False;
|
|
appdomain.SharedPath="c:\temp";
|
|
ConfigManager.SetItem(as, appdomain);
|
|
|
|
// d) Add binding policy
|
|
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) ConfigManager.GetEmptyConfigItem("BindingPolicy");
|
|
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
ConfigManger.AddItem(as, binding);
|
|
|
|
// e) Change BindingPolicy
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
IConfigCollection bindings = ConfigManager.Get("BindingPolicy", as);
|
|
// need to enable FOREACH!!!???
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
binding.UseLatestBuildRevision=false;
|
|
}
|
|
ConfigManager.Set(as, bindings);
|
|
|
|
// f) Remove BindingPolicy
|
|
String[] key = new String[3];
|
|
key[0]="g_SglAsm_SglMod1.dll";
|
|
key[1]="8e47bf1a5ed0ec84";
|
|
key[2]="*";
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
ConfigManager.RemoveByKey(as, key);
|
|
|
|
// alternate
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
IConfigCollection bindings = ConfigManager.Get("BindingPolicy", as);
|
|
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
if (binding.Name=="g_SglAsm_SglMod1.dll") {
|
|
ConfigManager.RemoveItem(as, binding);
|
|
break;
|
|
}
|
|
}
|
|
|
|
// g) Query for binding policy
|
|
AppDomainSelector as = new AppDomainSelector();
|
|
QuerySelector qs = new QuerySelector("Name=g_SglAsm_SglMod1.dll", as);
|
|
|
|
IConfigCollection bindings = ConfigManager.Get("BindingPolicy", qs);
|
|
// need to enable FOREACH!!!???
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
Console.WriteLine(binding.Name);
|
|
}
|
|
|
|
|
|
//*******************************************************************************************
|
|
// III: ConfigStore Add/Remove/Set/Save
|
|
// a) Read AppDomain
|
|
AppDomainSettingsStore as = new AppDomainSettingsStore();
|
|
AppDomainConfigItem appdomain = as.GetItem("AppDomain");
|
|
Console.WriteLine(appdomain.ShadowCopy);
|
|
|
|
// b) Read BindingPolicy
|
|
AppDomainSettingsStore as = new AppDomainSettingsStore();
|
|
IConfigCollection bindings = as.Get("BindingPolicy");
|
|
// need to enable FOREACH!!!???
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
Console.WriteLine(binding.Name);
|
|
}
|
|
|
|
// c) Change appdomain property
|
|
AppDomainSettingsStore as = new AppDomainSettingsStore();
|
|
as.SetProperty("AppDomain", "ShadowCopy", new Boolean(true));
|
|
as.Save();
|
|
|
|
// change more than one property at a time
|
|
AppDomainSettingsStore as = new AppDomainSettingsStore();
|
|
as.SetProperty("AppDomain", "ShadowCopy", new Boolean(true));
|
|
as.SetProperty("AppDomain", "SharedPath", "c:\temp");
|
|
as.Save();
|
|
|
|
AppDomainSettingsStore as = new AppDomainSettingsStore();
|
|
AppDomainConfigItem appdomain = as.GetItem("AppDomain");
|
|
appdomain.ShadowCopy=False;
|
|
appdomain.SharedPath="c:\temp";
|
|
as.SetItem(appdomain);
|
|
as.Save();
|
|
|
|
// d) Add binding policy
|
|
AppDomainSettingsStore as = new AppDomainSettingsStore();
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) as.GetEmptyConfigItem("BindingPolicy");
|
|
|
|
// alternative:
|
|
BindingPolicyConfigItem binding = new BindingPolicyConfigItem();
|
|
IConfigItem item = new BaseConfigItem(String ConfigType);
|
|
|
|
as.AddItem(binding);
|
|
as.Save();
|
|
|
|
// e) Change BindingPolicy
|
|
AppDomainSettingsStore as = new AppDomainSettingsStore();
|
|
IConfigCollection bindings = as.Get("BindingPolicy");
|
|
// need to enable FOREACH!!!???
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
binding.UseLatestBuildRevision=false;
|
|
}
|
|
as.Set(bindings);
|
|
as.Save();
|
|
|
|
// f) Remove BindingPolicy
|
|
String[] key = new String[3];
|
|
key[0]="g_SglAsm_SglMod1.dll";
|
|
key[1]="8e47bf1a5ed0ec84";
|
|
key[2]="*";
|
|
AppDomainSettingsStore as = new AppDomainSettingsStore();
|
|
as.RemoveByKey(key);
|
|
as.Save();
|
|
|
|
// alternate
|
|
AppDomainSettingsStore as = new AppDomainSettingsStore();
|
|
IConfigCollection bindings = as.Get("BindingPolicy");
|
|
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
if (binding.Name=="g_SglAsm_SglMod1.dll") {
|
|
as.RemoveItem(binding);
|
|
break;
|
|
}
|
|
}
|
|
as.Save();
|
|
|
|
// g) Query for binding policy
|
|
AppDomainSettingsStore as = new AppDomainSettingsStore();
|
|
Query query = new Query("ConfigType=BindingPolicy AND Name=g_SglAsm_SglMod1.dll");
|
|
Query query = new Query("BindingPolicy", "Name=g_SglAsm_SglMod1.dll");
|
|
|
|
IConfigCollection bindings = as.Get(query);
|
|
// need to enable FOREACH!!!???
|
|
for (int i=0; i<bindings.Count; i++)
|
|
{
|
|
BindingPolicyConfigItem binding = (BindingPolicyConfigItem) bindings[i];
|
|
Console.WriteLine(binding.Name);
|
|
}
|
|
|
|
class Store {
|
|
IConfigCollection Get(String ConfigType);
|
|
IConfigCollection Get(Query query);
|
|
|
|
IConfigItem GetItem(String ConfigType);
|
|
IConfigItem GetItem(Query query);
|
|
|
|
Object GetProperty(String ConfigType, String PropertyName);
|
|
Object GetProperty(Query query, String PropertyName);
|
|
|
|
void Add(IConfigCollection coll);
|
|
void AddItem(IConfigItem item);
|
|
|
|
void Remove(IConfigCollection coll);
|
|
void RemoveItem(IConfigItem item);
|
|
void RemoveByKey(String ConfigType, String key);
|
|
void RemoveByKey(String ConfigType, Object[] key);
|
|
|
|
void Set(IConfigCollection coll);
|
|
void SetItem(IConfigItem item);
|
|
void SetProperty(String ConfigType, String PropertyName, Object Value);
|
|
void SetProperty(Query query, String PropertyName, Object Value);
|
|
|
|
void Save();
|
|
}
|
|
|
|
class AppDomainConfigItem {
|
|
AppDomainConfigItem();
|
|
}
|
|
|
|
class BaseConfigItem {
|
|
BaseConfigItem(String ConfigType);
|
|
}
|