private ObjectArg[] GetObjectArgs(PengObjectInfo objInfo, PengWorld world, Func<string, Type> typeProvider) { ObjectArg[] ret = new ObjectArg[objInfo.Arguments.Length + 2]; ret[0] = new ObjectArg(typeof(string), objInfo.Name); ret[1] = new ObjectArg(typeof(PengWorld), world); for (int i = 0; i < objInfo.Arguments.Length; i++ ) { ret[i + 2] = ToObjectArg(objInfo.Arguments[i], typeProvider); } return ret; }
public void TestGetObjectArgs() { PengXmlWorldLoader_Accessor loader = new PengXmlWorldLoader_Accessor(); PengObjectInfo objInfo = new PengObjectInfo(); objInfo.Name = "obj1"; objInfo.TypeName = "PengEngineTest.PengObject"; objInfo.Arguments = new PengObjectArgumentInfo[] { new PengObjectArgumentInfo("System.Int32", "56"), new PengObjectArgumentInfo("System.Single", "57.61"), new PengObjectArgumentInfo("System.String", "Hello, World!"), }; var args = loader.GetObjectArgs(objInfo, null, x=>Type.GetType(x)); Assert.AreEqual(5, args.Length); Assert.AreEqual(typeof(string), args[0].Type); Assert.AreEqual("obj1", args[0].Value); Assert.AreEqual(typeof(PengWorld), args[1].Type); Assert.AreEqual(null, args[1].Value); Assert.AreEqual(typeof(int), args[2].Type); Assert.AreEqual(56, args[2].Value); Assert.AreEqual(typeof(float), args[3].Type); Assert.AreEqual(57.61f, args[3].Value); Assert.AreEqual(typeof(string), args[4].Type); Assert.AreEqual("Hello, World!", args[4].Value); }