从对象中提取值
本文关键字:提取 对象 | 更新日期: 2023-09-27 18:19:57
我想制作一个动态方法,在该方法中我传递我制作的对象的任何实例,例如:
public class Employee()
{
public string FName;
public string SName;
.....etc.
}
我想要的方法如下:
public void methodName(Object oObject)
{
//lets say that i have passed object employee to it.
}
有可能从oObject中提取任何值吗?我曾尝试过这样做,但它没有这样做的属性,当我放入手表时,我可以准确地看到其中类员工的所有属性。
有什么办法吗?
有很多方法
更新:您说您想要整个对象。铸造或接口以暴露属性是前进的方向。
您可以将对象强制转换为特定类型:
if (oObject is Employee)
{
string name = (oObject as Employee).FName;
}
您可以公开一个定义方法期望的接口,然后提供的类型实现接口:
public interface IFirstName
{
string FName { get; }
}
public void methodName(IFirstName objectWithFirstName)
{
string name = objectWithFirstName.FName;
}
您可以使用dynamic
并希望在运行时获得最佳效果(.NET4):
public void methodName(dynamic oObject)
{
string name = oObject.FName;
}
然后是反思。
但更好的问题是,这是一个好方法吗?我会有点怀疑那些接受任何东西并对事物抱有期望的方法。。。但这并不是说它不会或不应该发生。
是的,您可以通过简单地将对象类型转换回Employee类(如)来访问值
public void methodName(Object oObject)
{
//lets say that i have passed object employee to it.
//if oObject belongs to Employee class
if(oObject is Employee)
{
Employee employee = oObject as Employee;
//you can get access values here
}
}