在使用这种方法之前,我有一些方法包含四个或五个参数,因此我想将其中的大多数浓缩为一个对象。 TestOptions()对象具有其他可选值,例如“名称”或“位置”。
我在分别检索对象值时遇到麻烦。如何在Setup()方法中使用TestOptions()对象的指定值?
public async Task Test_One()
{
await Setup(new TestOptions() { brand = "Brand1", id = 10 }, new List<string> { "user1@abc.com" });
}
public async Task Setup(object values, List<string> emailAddresses)
{
//Do work here that uses 'brand' and 'id' individually
}
public class TestOptions
{
public string brand
{
get; set;
}
public string id
{
get; set;
}
}
谢谢。
答案 0 :(得分:2)
您可以使Setup
的签名采用强类型对象:
public async Task Setup(TestOptions values, List<string> emailAddresses)
{
//Do work here that uses 'brand' and 'id' individually
var brand = values.brand;
}
或强制转换值:
public async Task Setup(object values, List<string> emailAddresses)
{
//Do work here that uses 'brand' and 'id' individually
var typed = (TestObject)values;
var brand = typed .brand;
}
答案 1 :(得分:0)
我不知道我是否了解您的问题,但是如果要检索TestOptions的属性,请抛出一个对象变量,您需要首先对其进行强制转换,如下所示:
string brand = ((TestOptions)values).brand;
string id = ((TestOptions)values).id;
// etc...
无论如何,我建议您通过接收TestOption值而不是通用对象来更改方法,或者可能为每个不同的对象创建同一方法的不同实现。