如何从对象中获取值?

时间:2014-01-09 12:06:28

标签: c# .net interface

我有一个类作为接口“IClass”,它只接收一个对象,没有返回类型:

    public interface IClass
    {
        void OnEventReceived(EventData ev);
    }

现在我在另一个类“Caller”的构造函数中传递接口类对象

    public Caller(IClass evObjParm)
    {
        //pass parameters
    }

此课程使用evObjParm中存储的信息。但是我只对存储在evObjParm中的一些信息感兴趣。我如何获得该信息的子集?

2 个答案:

答案 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) { /* ... */ }
    // ...
}
相关问题