gpt4 book ai didi

c# - 转换数据类型并将其用作 TestContext.DataRow 的扩展方法

转载 作者:行者123 更新时间:2023-11-30 23:07:51 24 4
gpt4 key购买 nike

我有一个扩展方法,可以使用 DataRow 从 xml 中获取数据。而不是将行写为 TestContext.DataRow["Month"].ToString() 。我写了一个带有类型转换的扩展方法:

    public static T Get<T>(this DataRow row, string rowName)
{
if (string.IsNullOrWhiteSpace(rowName)) throw new ArgumentNullException(rowName);
TypeConverter converter = TypeDescriptor.GetConverter(typeof(T));
return (T)(converter.ConvertFromInvariantString(row[rowName].ToString()));
}

我的问题是,上面的扩展方法对于使用类型转换从 xml 中获取数据是否有意义,我可以将这些行指定为

1) string month = TestContext.DataRow.Get<string>("Month");

2) int monthVal = TestContext.DataRow.Get<int>("Month");

我有两种不同的数据类型,当我使用上述扩展方法时,每种数据类型都应该给我有效的数据和类型。对我来说它工作正常。但这是我如何进行类型转换并将其作为扩展方法吗?

最佳答案

I'm not sure if i can i have ToString() in the return statement. Also, wanted to know if this above method follows the coding standards as I'm new to C#

是的,您可以使用 TypeDescriptor.GetConverter获取使用 ConvertFromInvariantString 将字符串转换为目标类型的转换器。

return statement最后执行,所以当计算表达式的其余部分时。当然 ToString 是必需的,因为该方法需要一个 string 而不是 System.Object

但是从 DataRow 获取变量的正常方法不是这个扩展,而是可用的 Field-extension method :

string month = TestContext.DataRow.Field<string>("Month");
int monthVal = TestContext.DataRow.Field<int>("Month");

区别在于如果列不是string/int,这将抛出一个InvalidCastException,所以你应该事先知道它是什么.两者不能同时存在。

但你总是可以这样做:

string month = TestContext.DataRow["Month"].ToString();
int monthVal = int.Parse(month);

关于c# - 转换数据类型并将其用作 TestContext.DataRow 的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46912101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com