示例#1
0
        public void RegisterSubclass(Type type)
        {
            TypeInfo typeInfo = type.GetTypeInfo();

            if (!typeof(PlaySynchronousObject).GetTypeInfo().IsAssignableFrom(typeInfo))
            {
                throw new ArgumentException("Cannot register a type that is not a implementation of PlaySynchronousObject");
            }
            var className = GetClassName(type);

            try
            {
                mutex.EnterWriteLock();
                ConstructorInfo constructor = type.FindConstructor();
                if (constructor == null)
                {
                    throw new ArgumentException("Cannot register a type that does not implement the default constructor!");
                }
                var classInfo = new PlaySynchronousObjectSubclassInfo(type, constructor);

                registeredySynchronousObjects[className] = classInfo;
            }
            finally
            {
                mutex.ExitWriteLock();
            }
        }
示例#2
0
        public IDictionary <String, String> GetPropertyMappings(String className)
        {
            PlaySynchronousObjectSubclassInfo info = null;

            mutex.EnterReadLock();
            registeredySynchronousObjects.TryGetValue(className, out info);
            if (info == null)
            {
                registeredySynchronousObjects.TryGetValue("PlaySynchronousObject", out info);
            }
            mutex.ExitReadLock();
            return(info.PropertyMappings);
        }
示例#3
0
 public String GetClassName(Type type)
 {
     return(type == typeof(PlaySynchronousObject) ? "PlaySynchronousObject" : PlaySynchronousObjectSubclassInfo.GetSynchronousObjectClassName(type.GetTypeInfo()));
 }