public void Test() { MyClassB original = TypeAccessor <MyClassB> .CreateInstance(); MyClassB serialized; XmlSerializer sr = new XmlSerializer(/*[a]*/ TypeAccessor <MyClassB> .Type /*[/a]*/); original.ValueB = "string value B"; original.ValueMyClassA.ValueA = "string value A"; original.MyList.Add(TypeAccessor <MyClassA> .CreateInstance()); original.MyList.Add(TypeAccessor <MyClassC> .CreateInstance()); using (MemoryStream stm = new MemoryStream()) { sr.Serialize(stm, original); stm.Position = 0L; serialized = (MyClassB)sr.Deserialize(stm); } Assert.That(serialized.ValueB, Is.EqualTo(original.ValueB)); Assert.That(serialized.ValueMyClassA.ValueA, Is.EqualTo(original.ValueMyClassA.ValueA)); Assert.AreEqual(original.MyList.Count, serialized.MyList.Count); Assert.That(serialized.MyList[0] is MyClassA); Assert.That(serialized.MyList[1] is MyClassA); Assert.That(serialized.MyList[1] is MyClassC); Assert.AreEqual(serialized.MyList[0].GetType(), TypeFactory.GetType(typeof(MyClassA))); Assert.AreEqual(serialized.MyList[1].GetType(), TypeFactory.GetType(typeof(MyClassC))); }
public static void Main(string[] args) { // Create localizer IAssetBuilder builder = new AssetBuilder.OneBuildInstance(); IAsset asset = builder.Build(); StringLocalizerRoot localizer = new StringLocalizerRoot(asset, new CulturePolicy()); // Install TutorialLibrary's IAssetSources Assembly library = typeof(MyClass).Assembly; builder.AddLibraryAssetSources(library).Build(); #region Snippet // Install additional localization that was not available in the TutorialLibrary. IAssetSource assetSource = XmlLinesReader.Default.FileAssetSource("TutorialLibrary2-fi.xml"); builder.AddSource(assetSource).Build(); #endregion Snippet // Create class ILine <MyClass> classLocalizer = localizer.Type <MyClass>(); MyClassB myClass = new MyClassB(classLocalizer); // Use the culture that was provided with the class library (AssetSources) CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("de"); Console.WriteLine(myClass.Do()); // Use the culture that was supplied above CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("fi"); Console.WriteLine(myClass.Do()); }
public ClassObj() { Object instanceA = new MyClassA(); object instanceB = new MyClassB(); Console.ReadLine(); }
static void Main(string[] args) { //HashCode и ссылка на обьект в переменной, например в instanceA - это РАЗНЫЕ ВЕЩИ! Object instanceA = new MyClassA(); object instanceB = new MyClassB(); //instanceA. - 4 метода: Equals(object), GetHashCode(), GetType(), ToString(). //Object. - 2 статических метода: Equals(object,object) и ReferenceEquals(object, object) //Object browser => mscorlib[..] => System => Object // ~Object() - диструктор- это специальный метод, который учавствует в финализации объекта. // Вызывается автоматически перед тем, как Garbage Collector будет удалять обьект из кучи. // Equals(object) - виртуальный - ПРАВИЛО: если переопределяется Equals(object), то нужно и переопределить GetHashCode()// проверяет как ReferenceEquals только ссылки. // Equals(object,object) - статический- ЭТО ОБЕРТКА НАД ОБЫЧНЫМ Equals(object). Когда мы переопределяем Equals(obj) то и Equals(object,object) переопределяется тоже т.к внутри себя использует обычный Equals(obj) // GetHashCode() -виртуальный- возвращает hash code обьекта - т.е некий номер паспорта - // GetType() - возращает ссылку на экземпляр класса Type, который нам выдаст всю информацию // о типе того обьекта(экземпляра), на котором и был вызван этот метод. // MemberwiseClone() - граф.наследование клонирует ГЛУБОКО, а все ассоциации клонирует ПОВЕРХНОСТНО! // Смесь ГЛУБОКОГО и ПОВЕРХНОСТНОГО клонирования называется ЧАСТИЧНЫМ(неполным) клонированием. // Object() - конструктор // ReferenceEquals(object, object) - статический - сверяет ССЫЛКИ НА обьекты(адреса обьектов на куче). // Может быть так, что HashCod`ы совпадают и значение в обьектах одинаковое, НО ССЫЛКИ НА ТО ОБЬЕКТЫ РАЗНЫЕ! // ToString() - виртуальный //ДВА СТАТИЧЕСИХ: каждый из них имеет 2 аргумента - Equals(object,object) и ReferenceEquals(object, object) //Три виртуальных: Equals(object), GetHashCode(), ToString() //Delay Console.ReadKey(); }
static void Main() { Object instanceA = new MyClassA(); object instanceB = new MyClassB(); // Delay. Console.ReadKey(); }
static void Main(string[] args) { //Тут будут вызывыться конструкторы по умолчанию, которые будут инициализироваться все поля в классе //при этом вызывая другие конструкторы! MyClassA myA = new MyClassA(); MyClassB myB = new MyClassB(); MyClassC myC = new MyClassC(); }
public MyClassB(MyClassB param) { Height = param.Height; paramClassA = new MyClassA(); if (param.paramClassA != null) { paramClassA.Width = param.paramClassA.Width; } }
public void Merging_Properties() { MyClassB defaults = new MyClassB { Param1 = "defaults" }; MyClassB settings = new MyClassB { Param2 = "settings" }; MyClassB results = PropertyMerger.ObjectMerge<MyClassB>(defaults, settings); Assert.AreEqual("defaults", results.Param1); Assert.AreEqual("settings", results.Param2); Assert.AreEqual(null, results.Param3); }
public void TestMappingToTarget() { var a = new MyClassA(); var b = new MyClassB(); a.MyStruct = new MyStruct("A"); a.Adapt(b); b.MyStruct.Property.ShouldBe("A"); }
//.... public MyCLassB Clone() { var result = new MyClassB { Height = Height }; result.paramClassA = new MyClassA(); if (paramClassA != null) { result.paramClassA.Width = paramClassA.Width; } }
public void Merging_Properties() { MyClassB defaults = new MyClassB { Param1 = "defaults" }; MyClassB settings = new MyClassB { Param2 = "settings" }; MyClassB results = CoreUtils.ObjectMerge <MyClassB>(defaults, settings); Assert.AreEqual("defaults", results.Param1); Assert.AreEqual("settings", results.Param2); Assert.AreEqual(null, results.Param3); }
static void Main(string[] args) { MyClassA a = new MyClassA(); a.Method(); MyClassB b = new MyClassB(); b.Method(); MyClassC c = new MyClassC(); c.Method(); Console.ReadLine(); }
static void Main() { MyClassA myA = new MyClassA(); MyClassB myB = new MyClassB(); MyClassC myC = new MyClassC(); }
public MyClassB(MyClassB param) { this.Heigth = param.Height; this.MyClassA = param.MyClassA; }
public static void Main() { MyClassB b = new MyClassB(); b.Calc(); }
public int Diff(int a, int b) { classBObject = new MyClassB(); return(classBObject.Diff(a, b)); }
static void Main(string[] args) { MyClassA myA = new MyClassA(); MyClassB myB = new MyClassB(); }
public MyClassC(MyClassA a, MyClassB b) { // Console.WriteLine("called a+b"); }
static void Main() { MyClassB myB = new MyClassB(); MyClassB2 myB2 = new MyClassB2(); }