public abstract class BaseComponent : MarshalByRefObject, IMessageHandler, IComponentManagement
{
private static readonly object _instanceLock = new object();
private static volatile BaseComponent _instance;
private static volatile string _name;
private BaseComponent()
{
throw new BaseComponentCreateException(String.Format(PrivateErrors.BaseComponentPrivateConstructorError));
}
protected BaseComponent(string name)
{
_name = name;
if (_instance == null)
{
lock (_instanceLock)
{
if (_instance == null)
{
_instance = this;
}
}
}
else
{
throw new BaseComponentCreateException(String.Format(PrivateErrors.BaseComponentConstructorError));
}
}
ICAgIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50IDogTWFyc2hhbEJ5UmVmT2JqZWN0LCBJTWVzc2FnZUhhbmRsZXIsIElDb21wb25lbnRNYW5hZ2VtZW50CiAgICB7CiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgb2JqZWN0IF9pbnN0YW5jZUxvY2sgPSBuZXcgb2JqZWN0KCk7CiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9sYXRpbGUgQmFzZUNvbXBvbmVudCBfaW5zdGFuY2U7CiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9sYXRpbGUgc3RyaW5nIF9uYW1lOwoKICAgICAgICBwcml2YXRlIEJhc2VDb21wb25lbnQoKQogICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEJhc2VDb21wb25lbnRDcmVhdGVFeGNlcHRpb24oU3RyaW5nLkZvcm1hdChQcml2YXRlRXJyb3JzLkJhc2VDb21wb25lbnRQcml2YXRlQ29uc3RydWN0b3JFcnJvcikpOwogICAgICAgIH0KCiAgICAgICAgcHJvdGVjdGVkIEJhc2VDb21wb25lbnQoc3RyaW5nIG5hbWUpCiAgICAgICAgewogICAgICAgICAgICBfbmFtZSA9IG5hbWU7CgogICAgICAgICAgICBpZiAoX2luc3RhbmNlID09IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGxvY2sgKF9pbnN0YW5jZUxvY2spCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYgKF9pbnN0YW5jZSA9PSBudWxsKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgX2luc3RhbmNlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQmFzZUNvbXBvbmVudENyZWF0ZUV4Y2VwdGlvbihTdHJpbmcuRm9ybWF0KFByaXZhdGVFcnJvcnMuQmFzZUNvbXBvbmVudENvbnN0cnVjdG9yRXJyb3IpKTsKICAgICAgICAgICAgfQogICAgICAgIH0K