using System.ComponentModel.DataAnnotations;
using System.Collections.Generic;
public static void Main()
var obj2 = new MyClassMeta(obj);
Console.WriteLine("obj:");
Console.WriteLine("obj2:");
private static void Validate(object obj)
ValidationContext context = new ValidationContext(obj, null, null);
List<ValidationResult> results = new List<ValidationResult>();
bool valid = Validator.TryValidateObject(obj, context, results, true);
foreach (ValidationResult vr in results)
Console.Write("Member Name:{0}", vr.MemberNames.First());
Console.WriteLine(" - {0}", vr.ErrorMessage);
Console.WriteLine("I am valid.");
public partial class MyClass
public MyClass(MyClass toCopy)
this.Value = toCopy.Value;
public class MyClassMeta : MyClass
public override string Value
public MyClassMeta(MyClass toCopy): base (toCopy)
public partial class MyClass
public virtual string Value