CreateInstance() 공개 메소드

public CreateInstance ( ) : CassandraObject
리턴 CassandraObject
예제 #1
0
        public static CassandraObject GetCassandraObjectFromObject(object obj, CassandraType cassandraType = null)
        {
            if (cassandraType == null)
            {
                var sourceType = obj.GetType();
                cassandraType = CassandraType.GetCassandraType(sourceType);
            }

            if (obj == null)
            {
                return(null);
            }

            if (obj is CassandraObject)
            {
                return(((CassandraObject)obj).GetValue(cassandraType));
            }

            var type = cassandraType.CreateInstance();

            if (type == null)
            {
                return(null);
            }

            type.SetValue(obj);
            return(type);
        }
예제 #2
0
        public static CassandraObject GetCassandraObjectFromDatabaseByteArray(byte[] value, CassandraType cassandraType)
        {
            var type = cassandraType.CreateInstance();

            if (type == null)
            {
                return(null);
            }

            type.SetValueFromBigEndian(value);
            return(type);
        }
예제 #3
0
        protected override object GetValueInternal(Type type)
        {
            //If we're converting to a List<> type
            if (type.IsList())
            {
                var listType = type.GetPrimaryGenericType();

                //Check to see if this list's data type can be converted to the requested type
                if (ComponentType.CreateInstance().CanConvertTo(listType))
                {
                    return(TypeHelper.PopulateGenericList(_value.Select(o => (CassandraObject)o).ToList(), listType));
                }
            }

            return(Converter.ConvertTo(_value, type));
        }
예제 #4
0
        protected override object GetValueInternal(Type type)
        {
            //If we're converting to a Dictionary<> type
            if (type.IsDictionary())
            {
                var dictionaryTypes = type.GetAllGenericTypes();

                //Check to see if this list's data type can be converted to the requested type
                if (KeyType.CreateInstance().CanConvertTo(dictionaryTypes[0]) && ValueType.CreateInstance().CanConvertTo(dictionaryTypes[1]))
                {
                    return
                        (TypeHelper.PopulateGenericDictionary(
                             _value.ToDictionary(k => (CassandraObject)k.Key, v => (CassandraObject)v.Value),
                             dictionaryTypes[0], dictionaryTypes[1]));
                }
            }

            return(Converter.ConvertTo(_value, type));
        }
		public void Parse_CompositeType()
		{
			// arrange
			Type expected = typeof(CompositeType);
			var expectedInternals = new[] { typeof(TimeUUIDType), typeof(UTF8Type) };

			string cassandraString = "org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.TimeUUIDType,org.apache.cassandra.db.marshal.UTF8Type)";

			// act
			var cassandraType = new CassandraType(cassandraString);
			var instance = cassandraType.CreateInstance() as CompositeType;
			Type actual = cassandraType.FluentType;

			// assert
			Assert.Equal(expected, actual);
			Assert.Equal(2, instance.ComponentTypeHints.Count);

			foreach (var e in expectedInternals)
				Assert.True(instance.ComponentTypeHints.Any(x => x.FluentType == e), e.Name + " couldn't be found");
		}
예제 #6
0
        public void Parse_CompositeType()
        {
            // arrange
            Type expected          = typeof(CompositeType);
            var  expectedInternals = new[] { typeof(TimeUUIDType), typeof(UTF8Type) };

            string cassandraString = "org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.TimeUUIDType,org.apache.cassandra.db.marshal.UTF8Type)";

            // act
            var  cassandraType = new CassandraType(cassandraString);
            var  instance      = cassandraType.CreateInstance() as CompositeType;
            Type actual        = cassandraType.FluentType;

            // assert
            Assert.Equal(expected, actual);
            Assert.Equal(2, instance.ComponentTypeHints.Count);

            foreach (var e in expectedInternals)
            {
                Assert.True(instance.ComponentTypeHints.Any(x => x.FluentType == e), e.Name + " couldn't be found");
            }
        }