如何从C#中的对象变量中读取值

时间:2011-04-28 14:18:45

标签: c# ssis

我需要读取e..g ..类型为object的变量的值,我有一个名为result的变量:

object result= h[key];

h[key]是一个哈希表,它向结果变量返回5个值。如何在SSIS包中的C#脚本中读取第一个值为字符串类型的本地变量?

我只能看到结果变量的GetTypeEqualsToString()选项。

请帮忙吗?

有样本:

有一个样本; public void SQLLoop()      {         string bp,ap,ep,s,vs;         LocationInfo info = new LocationInfo();         string connection =“Server = Sname; Database = Dname; Integrated Security = SSPI”;         SqlConnection conn = new SqlConnection(connection);

    conn.Open();

   SqlCommand sqlcmd = new SqlCommand("SELECT Bp,Ap,EP,SL,VSr from Table1", conn);
   SqlDataReader rs=sqlcmd.ExecuteReader();


        while (rs.Read())
        {
            bp = rs.GetValue(0).ToString();
            ap = rs.GetValue(1).ToString();
            ep = rs.GetValue(2).ToString();
            s = rs.GetValue(3).ToString();
            vs = rs.GetValue(4).ToString();
            info.loadLocationInfo(ap, bp, ep, s, vs);
            h.Add(s, info);

        }
        conn.Close();

    }

public class LocationInfo
{
    String A;
    String B;
    String E;
    String S;
    String V;
    int id;

    public LocationInfo()
    {
    }

    public void loadLocationInfo(String a,String b,String e,String s,String v)
    {
        A =a ;
        B  =b ;
        E=e ;
       S =s;
        V = v;
    }


}

现在

public void fun1() { var result =(object)h [subject];    ///从哈希表中读取值

}

3 个答案:

答案 0 :(得分:1)

您必须将结果转换为您期望的类或接口。

var result = (IExpectedObject)h[key];

答案 1 :(得分:1)

假设您知道可以投射对象var result = (MyType) h[key]

的结果类型

编辑:在你的函数中使用它来获得第一个值var result = ((LocationInfo) h[key]).A

答案 2 :(得分:1)

更新: 好的,你有LocationInfo类,所以做这样的事情:

LocationInfo result = (LocationInfo)h[key]; 

然后在LocationInfo类上创建一些属性来检索字符串。

您可能需要转换哈希表中的对象。如下所示:

result = (Type)h[key];

以下是一个如何运作的示例:

Person1 = new Person("David", "Burris");
Person2 = new Person("Johnny", "Carrol");
Person3 = new Person("Ji", "Jihuang");

//The Add method takes Key as the first parameter and Value as the second parameter.

try
{
    MyTable.Add(Person1.Lname, Person1);
    MyTable.Add(Person2.Lname, Person2);
    MyTable.Add(Person3.Lname, Person3);

}
catch (ArgumentException ae)
{
    MessageBox.Show("Duplicate Key");
    MessageBox.Show(ae.Message);
}

因此,当你想要从表中检索时,你会这样做:

Person result = (Person)h[key];