Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C将对象传递给不同的方法_C#_.net - Fatal编程技术网

C# C将对象传递给不同的方法

C# C将对象传递给不同的方法,c#,.net,C#,.net,我有一个简短的问题。我有一个对象,我正试图传递给另一个类中的另一个方法 public virtual void Geocode(ICustomer customer) { RouteObjects.Customer roCustomer = customer as RouteObjects.Customer; if (customer != null) { RouteObjectsRepository.Geoco

我有一个简短的问题。我有一个对象,我正试图传递给另一个类中的另一个方法

 public virtual void Geocode(ICustomer customer)
    {
        RouteObjects.Customer roCustomer = customer as RouteObjects.Customer;

        if (customer != null)
        {
            RouteObjectsRepository.Geocode(roCustomer);
            GeoCodeUpdateEventPublisher.UpdateGeoCustomer(roCustomer);
        }
    }
我试图在方法UpdateCocustomer中将roCustomer对象传递给GeoCodueUpdateEventPublisher。我的UpdateGocustomer看起来像这样

 public virtual void UpdateGeoCustomer(object roCustomer)
    {
        Publish(roCustomer); 
    }
我想知道这是不是通过这个物体的正确方法?然后,我将调用publish方法,它看起来像这样

 protected virtual void Publish(object roCustomer)
    {

            PublishMessage publishMessage = CreatePublishMessage(roCustomer);

            if (publishMessage != null)
            {
                Subscribers.AsParallel().ForAll(s => s.Send(publishMessage));
            }

    }

我只是想验证我是否正确地传递了这个对象

作为一个对象传递它本身并没有什么问题,而不是它是什么类型或ICCustomer接口,这实际上取决于特定的用例和编码风格。如果您需要访问它的属性,并将其作为对象传递,那么您需要对其进行强制转换,这将是一种不必要且不好的处理方式,即,如果您将其作为对象传递给该更新方法,然后它将转为MyObjectTypeobj.Whatever=Something;那么您正在做一些有问题的事情。

正确的方法是使用正确的类型声明接收函数。除非函数需要处理任何类型的参数。

正确传递它意味着什么?你的代码有效吗?这是发现代码是否正确的主要方法。“正确性”是由您的意图决定的,即您是否希望Publish接受实现ICCustomer接口的任何对象或实际对象。如果是这样的话,那么你应该在程序完成地理编码后保留你的界面。我想做的是把这个roCustomer对象传递给我的更新,启动一个消息队列,让另一个程序来接收它。我只想从客户跟踪号x,y,cooridinates这样的对象中得到某些东西。诸如此类。根据这种解释,您应该将其作为实际类型传递,直到它被发送到您的消息队列,此时您应该从要跟踪的对象发送值。RouteObjects.Customer是一个类,因此当我使用方法将对象中的项放入队列I do roCustomer时,我会正确地传递这些值。我无法访问对象中的项目。很抱歉,我可能没有正确理解,您需要RouteObjects.Customer roCustomer,而不是将object roCustomer作为函数的参数,然后才可以访问。不清楚你一直在问什么如果那是你的问题。是的,一切都解决了谢谢你对不起,我没有问对问题很好的表达方式——扩大他的措辞,基本上,为了正确起见,您希望尽可能具体,如果函数要处理更通用的内容,则只将类型放宽为更通用的内容。