我有大量自动生成的对象。尽管它们都是不同的、不相关的类,但所有对象都共享一些基本属性(名称、id 等)。我不控制这些对象的生成,所以很遗憾我无法采用理想的方法来实现接口。我想创建一个方法,在该方法中我传递任意一个这些对象并使用这些公共属性做一些事情。
一般的想法是这样的:
someObj a = new someObj();
a.name = "sara";
diffObj b = new diffObj();
b.name = "joe";
string phrase = string.Format("I am with {0} and {1}",
getName(a), getName(b));
private string getName(object anyObjWithName)
{
return anyObjWithName.name;
}
虽然这自然是行不通的。
我认为一个泛型方法可能有答案,但我能看到用当前类型调用它的唯一方法是 using genericMethod.Invoke
,它仍然存在无法解析方法中传递对象的属性的相同问题。这与使用仅在执行时已知的类型参数调用泛型方法或如何使用给定的 Type 对象调用泛型方法不同?在方法中只使用类型或类型的属性,而不是对象的属性。
我知道这将(非常)容易出错,但我可以保证遇到的所有对象都将具有被操纵的公共属性。