我想創建一個類,從用戶獲取一個類的名稱和未知數量的參數,並創建一個合適的對象。 當我運行我的代碼,我得到一個MissingMethod異常。從c中的參數數量未知的字符串創建一個對象#
這是我的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project2
{
class Class1
{
public static void Main()
{
Console.WriteLine("enter a class name");
string className = Console.ReadLine();
Console.WriteLine("enter parameters seperate with a space");
string parametersLine = Console.ReadLine();
string []parameters = parametersLine.Split(' ');
//Console.WriteLine(parameters.Length);
CreateObject createObject = new CreateObject(className, parameters);
Console.ReadKey();
}
}
class CreateObject
{
private readonly string className;
public CreateObject(string className, string[] parameters)
{
this.className = className;
try
{
if (parameters.Length == 1 && parameters[0] == "") // no parameters
{
Activator.CreateInstance(className.GetType());
}
else {
Activator.CreateInstance(className.GetType(), parameters);
}
}
catch (Exception e)
{
Console.WriteLine(e.GetType());
}
}
}
class Person
{
public int id{ get; set; }
public string name{ get; set; }
public Person()
{
Console.WriteLine("Created empety Person object");
}
public Person(int id, string name)
{
this.id = id;
this.name = name;
Console.WriteLine("Created Person object. " +"id:" + id + " name:" + name);
}
}
class Point
{
public int x { get; set; }
public int y { get; set; }
public int z { get; set; }
public Point()
{
Console.WriteLine("Created empety Point object");
}
public Point(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
Console.WriteLine("Created Point object. " + "x:" + x + " y:" + y + " z:" + z);
}
}
}
您的代碼只能找到將* string *作爲參數類型的構造函數。必須將輸入的參數值轉換爲正確的類型將是非常重要的。很難猜出爲什麼你需要解決這個問題。 – 2014-11-08 18:19:28
只在開始。它與沒有參數的構造函數一起工作。 – 2014-11-08 18:49:20