传递参数的问题

时间:2013-07-08 11:38:30

标签: c# wpf parameters type-conversion

在我的应用程序中,以下是getter / setter:

    private string client { get { return ClientText.Text; } set { ClientText.Text=value;} }
    private string application { get { return ApplicationText.Text; } set { ApplicationText.Text = value; } }
    private string starttime { get { return StartTimeText.Text; } set { StartTimeText.Text = value; } }
    private string stoptime { get { return StopTimeText.Text; } set { StopTimeText.Text = value; } }
    private string task { get { return TaskText.Text; } set { TaskText.Text = value; } }
    private string project { get { return ProjectText.Text; } set { ProjectText.Text = value; } }

我想将这6个值传递给以下,

Harvest_TimeSheetEntry entry=new Harvest_TimeSheetEntry(string,string,DateTime,DateTime,int,int);

我应该如何转换这6个属性并传递给该函数/构造函数?

3 个答案:

答案 0 :(得分:1)

目前尚不清楚你要求的是什么,但可能你需要这样的东西:

var entry = new Harvest_TimeSheetEntry() {
    client = ClientName,  //CLIENT NAME YOU INTEND TO PASS TO CTOR
    starttime = startDateTime.ToString()  //DATE TIME YOU INTEND TO PASS TO CTOR
     .....
}

如果这不是您所要求的,请澄清。

编辑

如果您遇到的问题是从UI上的string转换为实际数据类型,则需要构建一个类型实例,在这种情况下您可以使用:

DateTime.Parse - 从字符串解析为DateTime格式

int.TryParse - 解析integer个值。

答案 1 :(得分:1)

转换的简单方法是执行此操作

DateTime dtStartTime = DateTime.Parse(starttime);
DateTime dtStopTime = DateTime.Parse(stoptime);
int intTask = Int32.Parse(task);
int intProject = Int32.Parse(project);

但是,这假设DateTime格式正确,taskproject是有效整数。您需要添加自己的错误处理,这样做的好方法是查看DateTime.TryParseDateTime.TryParseExact方法和Int32.TryParse方法。

例如,

int intTask;
if(Int32.TryParse(task, out intTask))
{
    //parse successful
}
else
   //parse unsuccessful

答案 2 :(得分:0)

如果要将字符串转换为其他数据类型,则可以使用一些选项,可用的方法也取决于目标类型。 (Worth a read)

我在这个例子中推荐的功能是:DateTime.ParseExactint.Parse

以下是如何使用每个的示例:

int convertedInt = int.Parse(myIntString);

DateTime convertedDateTime = DateTime.ParseExact(myDateString, "dd/MM/yyyy", null);

然后,您可以将这些值传递给您的函数。

注意:我假设您的日期格式为dd/MM/yyyy - others are available

重要的是要知道如果其中一个字符串不是预期的格式,你就会得到异常。建议在调用这些方法之前验证输入字段。值得注意的是,每种方法都有Try个方法:DateTime.TryParseExactint.TryParse,如果格式无效,您可以采取措施。