我有一个类作为接口“IClass”,它只接收一个对象,没有返回类型:
public interface IClass
{
void OnEventReceived(EventData ev);
}
现在我在另一个类“Caller”的构造函数中传递接口类对象
public Caller(IClass evObjParm)
{
//pass parameters
}
此课程使用evObjParm
中存储的信息。但是我只对存储在evObjParm中的一些信息感兴趣。我如何获得该信息的子集?
答案 0 :(得分:1)
您可以使用LINQ从传递给事件处理程序的EventData中提取任意信息。
public struct EventData
{
public int id;
public string name;
public int position;
public string auxiliary;
}
...
void OnEventReceived(EventData ev) {
var infoRecord = ev.Select(x => new { x.name, x.id }).ToArray();
...
}
答案 1 :(得分:1)
这是一个非常简单或非常复杂的问题,但为什么不只保存你需要的东西呢?
public string Name {get; set;}
public DateTime Time {get; set;}
public Caller(IClass evObjParm)
{
Name = evObjParm.Name;
Time = evObjParm.Time;
}
或者你可能会要求(更有可能):
public Caller(IClass evObjParm)
{
if(evObjParm is ClassA)
{
var a = evObjParm as ClassA;
var name = a.Name;
// ...
}
if(evObjParm is ClassB) { /* ... */ }
// ...
}