[英]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.