Aquí dejo un ejemplo de como personalizar el cast de nuestras clases a otras con implicit/explicit operator, por si nos interesa controlar la conversión.
Las clases:
public class ClassString
{
public string value1 { get; set; }
public string value2 { get; set; }
public static implicit operator ClassInt(ClassString c2)
{
ClassInt c = new ClassInt
{
value1 = int.Parse(c2.value1),
value2 = int.Parse(c2.value2)
};
return c;
}
}
public class ClassInt
{
public int value1 { get; set; }
public int value2 { get; set; }
public static explicit operator ClassString(ClassInt c2)
{
ClassString c = new ClassString
{
value1 = c2.value1.ToString(),
value2 = c2.value2.ToString()
};
return c;
}
}
El test:
[TestMethod]
public void TestMethod1()
{
ClassInt c1 = new ClassInt {value1 = 100,value2 = 200};
ClassString c2 = (ClassString) c1;
Assert.AreEqual(c2.value1, "100");
Assert.AreEqual(c2.value2, "200");
ClassInt c3 = c2;
Assert.AreEqual(c3.value1, 100);
Assert.AreEqual(c3.value2, 200);
}
Categories: , .NET Framework, C#, Trucos


