簡體   English   中英

從另一個方法C#訪問對象

[英]accessing object from another method c#

我有一個返回對象的方法:

private object myObjectMethod(){ 
    //...
    return myObject;
}

但是在另一種方法中,我想檢索此對象:

private void myotherMethod(){   
    var x = myObjectMethod();
    // Now how would I access the properties of myObject?
}

最好的方法是只從方法中返回您正在處理的實際類型


但是,如果這不是一個選擇,並且您確實陷入了僅從方法中返回object困境,那么您就有幾個選擇。

如果您知道正確的類型,則鑄造將是最簡單的方法:

((ActualType)x).SomeProperty;

或測試演員表是否正確:

string val;
if (x is ActualType)
    val = (x as ActualType).SomeProperty;

或者,如果您知道屬性名稱,但不知道x的類型,則:

PropertyInfo pi = x.GetType().GetProperty("SomeProperty");
string somePropertyValue = (string)pi.GetValue(x, null);

或者,如果您使用的是C#4,則可以使用dynamic

string somePropertyValue = ((dynamic)x).SomeProperty;

只是不要為動態而瘋狂。 如果您發現dynamic使用過多,則代碼可能存在更深層次的問題。

更改

private object myObjectMethod(){ 
    ...
    return myObject;
}

private TypeOfMyObject myObjectMethod(){ 
    ...
    return myObject;
}

您應該將方法的返回類型更改為您感興趣的實際類。並且可能需要更改其對公眾的可見性。

您也可以使用反射或投射

(obj as MyObject).Stuff; 

您可以使用方法的通用版本:

public static T MyObjectMethod<T>()
{
    return (T)myObject;
}

接着:

var myObject = MyObjectMethod<MyObjectClass>();
myObject.Property;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM