|
|
От: | Фёдор | |
| Дата: | 10.11.03 02:51 | ||
| Оценка: | |||
namespace Satellite
{
/// Activate и другие обслуживающие объявлены как nonstatic.
/// Вызов их может осуществляться только родившим классом.
///
/// Static члены будут доступны компонентам
/// ...и вообще всем внутри AppDomain, по типу расшаренных.
public class Station : MarshalByRefObject
{
private static Dispatcher _dispatcher;
public static Dispatcher Dispatcher
{
get { return _dispatcher;}
}
public void Activate( string configFileName)
{
if( _dispatcher != null)
throw new Exception( "Station уже активирована в этом AppDomain.");
if( configFileName == null)
{
// Имя конфигурации по умолчанию.
configFileName = AppDomain.CurrentDomain.BaseDirectory
+ "Station.config";
}
_dispatcher = new Dispatcher();
_dispatcher.LoadComponents( configFileName);
}
...
}
}object obj = Station.Dispatcher["/Control/CommonActions/"];
namespace Satellite.Data
{
public class ComponentInfo
{
[XmlAttribute( "assemblyfile")]
public string AssemblyFile;
[XmlAttribute( "typename")]
public string TypeName;
[XmlAttribute( "path")]
public string Path;
[XmlElement( "data")]
public XmlDocument Data;
public ComponentInfo()
{}
public ComponentInfo( object obj, string path)
{
this.AssemblyFile = obj.GetType().Assembly.CodeBase;
this.TypeName = obj.GetType().FullName;
this.Data = Serialize( obj);
this.Path = path;
}
...
}
}