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"); }
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. }