static IContextAttribute[] CreateContextAttributesFromConfigEntries(ArrayList contextAttributes)
{
// create context attribute entry list
int numAttrs = contextAttributes.Count;
if (numAttrs == 0)
return null;
IContextAttribute[] attrs = new IContextAttribute[numAttrs];
int co = 0;
foreach (RemotingXmlConfigFileData.ContextAttributeEntry cae in contextAttributes)
{
Assembly asm = Assembly.Load(cae.AssemblyName);
IContextAttribute attr = null;
Hashtable properties = cae.Properties;
if ((properties != null) && (properties.Count > 0))
{
Object[] args = new Object[1];
args[0] = properties;
// We explicitly allow the ability to create internal
// only attributes
attr = (IContextAttribute)
Activator.CreateInstance(
asm.GetType(cae.TypeName, false, false),
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.CreateInstance,
null,
args,
null,
null);
}
else
{
attr = (IContextAttribute)
Activator.CreateInstance(
asm.GetType(cae.TypeName, false, false),
true);
}
attrs[co++] = attr;
}
return attrs;
} // CreateContextAttributesFromConfigEntries