コード例 #1
0
		/// <summary>
		///     Вносит класс напрямую в кэш
		/// </summary>
		/// <param name="cls"></param>
		public void Set(BSharpRuntimeClass cls){
			if (!Cache.ContainsKey(cls.Fullname)){
				Cache[cls.Fullname] = new BSharpRuntimeClassDescriptor{
					Fullname = cls.Fullname,
					CachedClass = cls,
				};
			}
			else{
				Cache[cls.Fullname].CachedClass = cls;
			}
		}
コード例 #2
0
        public void CanSetupSimplyHeader()
        {
            var cls = new BSharpRuntimeClass {
                Definition = new XElement(BSharpRuntimeDefaults.BSHARP_CLASS_HEADER, XElement.Parse("<a code='X' fullcode='N.S.X'/>"))
            };

            Assert.AreEqual("X", cls.Name);
            Assert.AreEqual("N.S", cls.Namespace);
            Assert.AreEqual("N.S.X", cls.Fullname);
            Assert.NotNull(cls.RuntimeDescriptor);
            Assert.AreEqual(RuntimeClassResolutionType.NotDefined, cls.RuntimeDescriptor.ResolutionType);
        }
コード例 #3
0
 /// <summary>
 ///     Вносит класс напрямую в кэш
 /// </summary>
 /// <param name="cls"></param>
 public void Set(BSharpRuntimeClass cls)
 {
     if (!Cache.ContainsKey(cls.Fullname))
     {
         Cache[cls.Fullname] = new BSharpRuntimeClassDescriptor {
             Fullname    = cls.Fullname,
             CachedClass = cls,
         };
     }
     else
     {
         Cache[cls.Fullname].CachedClass = cls;
     }
 }
コード例 #4
0
        private IBSharpRuntimeProvider GetPrecompileClsProvider()
        {
            var provider = new BSharpGenericClassProvider();

            foreach (var cls in _context.PreparedContext.Get(BSharpContextDataType.Working))
            {
                var rcls = new BSharpRuntimeClass {
                    Name          = cls.Name,
                    Namespace     = cls.Namespace,
                    PrototypeCode = cls.Prototype,
                    Loaded        = true,
                    Definition    = cls.Compiled
                };
                provider.Set(rcls);
            }
            return(provider);
        }
コード例 #5
0
        public static BSharpRuntimeClass CreateCls <T>(string name, IContainer c = null)
        {
            var n = typeof(T).Name;

            if (typeof(object) == typeof(T))
            {
                if (!string.IsNullOrWhiteSpace(name))
                {
                    n = name.Replace(".", "_");
                }
            }
            var rt = typeof(T).AssemblyQualifiedName;

            if (!string.IsNullOrWhiteSpace(name))
            {
                rt = name;
            }
            var cls = new BSharpRuntimeClass(c)
            {
                Definition = XElement.Parse(string.Format("<a code='{0}' fullcode='my.test.{0}' runtime='{1}'/>", n, rt))
            };

            return(cls);
        }