我有一个方法,它返回抽象类:
public static object CurrentInfo()
{
// some code here
return new
{
URL = "www.mydomain.com",
User = "Jack",
Age = 20
};
}
当我使用该方法时,我获得了一个抽象类结果,因此我将其带入 object (或 var )类型:
object obj = MyClass.CurrentInfo();
//var obj = MyClass.CurrentInfo(); // I also tried that
我无法从 obj 网址,年龄和用户 >对象。如果我尝试以下操作会导致错误。
string myUrl = obj.URL // the same form Age and User
我应该接受吗?但到了什么......?我想排除创建新STRUCT的方式。
答案 0 :(得分:5)
创建一个具有这些属性的类,以便您可以正确访问它们,然后返回对象可以是强类型类而不是匿名类。这样您就可以访问对象的属性。
,例如
public class Info
{
public string URL {get; set;}
public string User {get; set;}
public int Age {get; set;}
}
public static Info CurrentInfo()
{
// some code here
return new Info()
{
URL = "www.mydomain.com",
User = "Jack",
Age = 20
};
}
答案 1 :(得分:1)
如果你想保留匿名类型,如上所示使其难以使用,那么这里是一个处理返回对象的解决方案:
var obj = CurrentInfo();
System.Type type = obj.GetType();
string url = (string)type.GetProperty("URL").GetValue(obj, null);
答案 2 :(得分:0)
您可以使用
类型Tuple<string, string, int>
这是一个命名类,代表您要创建的内容,并且已经预先构建到.NET框架中,因此您无需创建任何新类或结构。
你会写类似
的东西Tuple<string, string, int> obj = Tuple.Create("www.mydomain.com", "Jack", 20);
有关3参数元组的信息,请参阅MSDN文档:http://msdn.microsoft.com/en-us/library/dd387150(v=vs.110).aspx