मैं सामान्य रूप से करने की कोशिश या तो सरल या जटिल प्रकार में उपयोगकर्ता इनपुट कन्वर्ट का उपयोग कर:Convert किसी भी जटिल प्रकार के सामान्य रूप से System.String "Convert.ChangeType()"
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Welcome, please provide the following info... Confirm with <RETURN>!");
Console.WriteLine();
Console.Write("Name (e.g. 'Peggy Sue'): ");
var user = GetUserInput<User>(Console.ReadLine());
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Hi {0}, nice to meet you!", user.Forename);
Console.WriteLine();
Console.Write("Age: ");
user.Age = GetUserInput<ushort>(Console.ReadLine());
Console.WriteLine();
Console.WriteLine("Thanks and goodbye!");
Console.WriteLine("Press <RETURN> to quit...");
Console.ReadLine();
}
static T GetUserInput<T>(string data)
{
return (T) Convert.ChangeType(data, typeof (T));
}
}
class User
{
public User(string name)
{
var splitted = name.Split(' ');
Forename = splitted[0];
Lastname = splitted[1];
}
public static implicit operator User (string value)
{
return new User(value);
}
public static explicit operator string (User value)
{
return string.Concat(value.Forename, " ", value.Lastname);
}
public string Forename { get; private set; }
public string Lastname { get; private set; }
public ushort Age { get; set; }
}
मेरी "उपयोगकर्ता" वर्ग के लिए रूपांतरण के लिए , मुझे हमेशा "System.String 'से' ConsoleApplication1.User 'पर अमान्य कास्ट प्राप्त होता है।" क्या कोई जानता है कि इसे कैसे ठीक करें?
अगर मैं कुछ इस तरह (नहीं सामान्य रूप से) की कोशिश है, यह सिर्फ सही काम करता है:
Console.WriteLine((string) ((User) "Peggy Sue"));
उपयोगकर्ता ऑब्जेक्ट एक डिफ़ॉल्ट कन्स्ट्रक्टर प्रदान करता है ?? –