我想创建一个动态方法,在其中我传递任何对象的实例,例如:
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中提取任何值,我试图这样做,但它没有这样做的属性,当我放入手表时,我可以在其中实际看到类员工的所有属性。 / p>
那有什么办法吗?
答案 0 :(得分:2)
有很多方法。
更新:你说你想要整个对象。 Casting或暴露属性的接口是前进的方式。
您可以将对象强制转换为特定类型:
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
并希望在运行时(.NET 4)获得最佳效果:
public void methodName(dynamic oObject)
{
string name = oObject.FName;
}
然后有反思。
但更好的问题是,这是一个好方法吗?我会对采取任何措施并对事情有所期待的方法持怀疑态度......但这并不是说它不会或不应该发生。
答案 1 :(得分:1)
是的,您可以通过简单地将类型转换回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
}
}