1

我创建了一个带有布尔属性和集合的对象。

我所做的:

我有一个在发布时被调用的方法,该方法又调用另一个返回对象的方法。我的问题是我没有得到对象属性。

public object methodThatReturnsAnObject(string a, string b)   
{
    object data = new {isSaved = false, personsToCredit = ""}

    // perform my code and if all is valid i set values to my object properties and return the object

    data = new {isSaved = valid, personsToCredit = persons }

    return data;    
}

我的另一种方法:

object Information = methodThatReturnsAnObject(string a, string b);

我的问题是什么?当我调试该Information对象包含我想要获得的两个属性但当我键入时Information.isSaved它说信息不包含定义isSaved

4

1 回答 1

7

您期望编译器知道您的对象将具有这些动态属性。

这只是您必须正确使用的基本面向对象。

您需要做的是(1)定义一个具有两个属性的特定类,并让您的方法改为返回该类,或者(2)使用dynamic而不是object.

方法#1的示例:

public class UpdateInfo
{
    public bool IsSaved {get; set;}

    ...
}


public UpdateInfo MethodThatReturnsUpdateInfo(string a, string b)
{
    ...
}

你应该dynamic只在你不能使用方法#1的情况下使用,但我会说在99.9%的情况下,方法#1是要走的路。

于 2013-09-16T08:20:21.437 回答