Hi,
I have a container class for adding some properties to standard data types like int, string and so on. This container class encapsulate an object of such an (standard type) object. Other classes then use sub classes of the container class for getting/setting the added properties. Now I want that the sub classes can implicitly cast between its encapsulated objects and itself without having extra code in it.
Here is a simplified example of my classes:
// Container class that encapsulates strings and adds property ToBeChecked
// and should define the cast operators for sub classes, too.
internal class StringContainer
{
protected string _str;
public bool ToBeChecked { get; set; }
public static implicit operator StringContainer(string str)
{
return new StringContainer { _str = str };
}
public static implicit operator string(StringContainer container)
{
return (container != null) ? container._str : null;
}
}
// An example of many sub classes. Its code should be as short as possible.
internal class SubClass : StringContainer
{
// I want to avoid following cast operator definition
// public static implicit operator SubClass(string obj)
// {
// return new SubClass() { _str = obj };
// }
}
// Short code to demosntrate the usings of the implicit casts.
internal class MainClass
{
private static void Main(string[] args)
{
SubClass subClass = "test string"; // ERROR: Cannot convert source type 'string' to 'SubClass'
string testString = subClass; // No error
}
}
My real container class has two type parameters, one for the type of encapsulated object (string, int,...) and a second for the sub class type (e.g. SubClass).
How can I make the code
SubClass subClass = "test string"; // ERROR: Cannot convert source type 'string' to 'SubClass'
runnable by minimal code in sub classes?