public async Task TryUpdateModel_NonSettableICollectionModel_EmptyPrefix_IsNotBound()
        {
            // Arrange
            var testContext = ModelBindingTestHelper.GetTestContext(request =>
            {
                request.QueryString = QueryString.Create("Address[0].Street", "SomeStreet");
            });

            var modelState = testContext.ModelState;
            var model      = new Person8();

            // Act
            var result = await TryUpdateModelAsync(model, string.Empty, testContext);

            // Assert
            Assert.True(result);

            // Model
            Assert.NotNull(model.Address);

            // Arrays should not be updated.
            Assert.Single(model.Address);
            Assert.Collection(
                model.Address,
                (a) =>
            {
                Assert.Equal("Redmond", a.City);
                Assert.Equal("One Microsoft Way", a.Street);
            });

            // ModelState
            Assert.True(modelState.IsValid);
        }
        public void ClrTypeMappingPrivateProperties()
        {
            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest());

            var valueAnnotation = this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "InspectedBy").Single();

            this.ValidateClrObjectConverter(valueAnnotation, new Person6());

            this.ValidateClrObjectConverter(valueAnnotation, new Person7()
            {
                Id = 10
            });

            Person8 actual = ConvertToClrObject <Person8>(valueAnnotation);

            Assert.AreEqual(10, actual.Id, "Failed");
            Assert.AreEqual("Young", actual.FirstName, "Failed");
        }
Exemple #3
0
        public static void Main(string[] args)
        {
            /*
             *          OBJECT ORIENTED PROGRAMMING - NESNE TABANLI PROGRAMLAMA
             *
             *   CLASS : Yapmak istediğimiz işlemleri gruplara ayırıp daha düzenli ve profesyonel kodlar yazabilmek için kullanılan yapıdır.
             *   PARENT / SUPER CLASS : Miras veren class' dır.
             *   CHILD / SUB CLASS : Miras veren class' dır.
             *
             *   ERİŞİM BELİRLEYİCİLER : Class veya instancelara nasıl erişebileceğimizi belirlerler.
             *
             *     I)   public			    : Her yerden erişim sağlanır.
             *    II)   private			    : Sadece tanımlandığı sınıfta erişim sağlanır.
             *   III)   internal			: Sadece tanımlandığı projede erişim sağlanır.
             *    IV)   protected			: Sadece tanımlandığı sınıfta veya mirasçı sınıfta erişim sağlanır.
             *     V)	protected internal  : protected' dan farkı tanımlamanın aynı projede olmasına gerek yoktur.
             *    VI)   private protected   : Sadece kendinden türetilmiş nesneler üzerinden kullanılabilir.
             *
             *          Not : Eğer bir üye üzerinde yapılan değişiklik başka yapıları da etkiliyorsa veya zarar veriyorsa, o üye private tanımlanmalıdır,
             *          Not : Private verilerin değerlerini alan ve ayarlayan metotlar public olmalıdır.
             */

//------------------------------------------------------------------------------------------------ CLASS ÇAĞRILDIĞI KISIM -------------------------------------------------------------------------------------------------

            // KONU 1 : FIELD TANIMLAMA
            // INSTANCE : Bir class' dan üretilen nesnedir.
            Person p1 = new Person();

            p1._Name    = "Ali";
            p1._Surname = "YILDIRIM";
            p1._Age     = 35;
            p1._Gender  = 'e';
            //Console.WriteLine($"{p1._Name} {p1._Surname} {p1._Age} {p1._Gender}");

//--------------------------------------------------------------------------------------------------------------------------------------------------------


            // KONU 2 : ENCAPSULATION (KAPSÜLLEME)
            Person2 p2 = new Person2 {
                Name = "Ayşe", Surname = "KARATAŞ", Age = 15, Gender = 'k'
            };                                                                                           // Üstte yazdığımız şekil dışında bu şekildede yazabiliriz.
            //Console.WriteLine($"{p2._Name} {p2._Surname} {p2._Age} {p2._Gender}");

//--------------------------------------------------------------------------------------------------------------------------------------------------------


            // KONU 3 : INHERITANCE (KALITIM / MİRASLAMA)
            Person3 p3 = new Person3();

            p3.Name    = "Mehmet";
            p3.Surname = "ATEŞ";
            p3.FullName(p3.Name, p3.Surname);
            p3.Greetings();
            //Console.WriteLine($"{p3.Name} {p3.Surname}");

            Person4 p4 = new Person4();

            p1._Name    = "Tuana";
            p1._Surname = "DEMİR";
            p4.Age      = 22;
            p4.FullName(p4.Name, p4.Surname);
            p4.Greetings();
            //Console.WriteLine($"{p4.Name} {p4.Surname} {p4.Age}");

//--------------------------------------------------------------------------------------------------------------------------------------------------------


            // KONU 4 : INHERITANCE (KALITIM / MİRASLAMA)
            Person5 p5 = new Person5();

            p5.Greetings();

            Person6 p6 = new Person6();

            p6.Greetings();

//--------------------------------------------------------------------------------------------------------------------------------------------------------


            // KONU 5 :	ABSTRACT CLASS
            //Person7 p7 = new Person7(); >>> Abstract class' dan intance oluşturulamaz.

            Person8 p8 = new Person8();

            p8.Greetings();
            p8.GreetingsTR();

//--------------------------------------------------------------------------------------------------------------------------------------------------------


            // KONU 6 :	CONSTRUCTOR VE DESTRUCTOR METOTLAR
            Tructor tructor = new Tructor();            // Class' dan instance ürettiğim için constructor metodum otomatik çalışacak.

            string  Name     = "Gözde";                 // Overload constructor metodum için parametre oluşturdum.
            Tructor tructor2 = new Tructor(Name);       // Class' dan instance ürettiğim ve parametre oluşturduğum için overload constructor metodum otomatik çalışacak.
        }