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

时间:2016-07-29 15:03:56

标签: c# .net

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

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

        if (customer != null)
        {
            RouteObjectsRepository.Geocode(roCustomer);
            GeoCodeUpdateEventPublisher.UpdateGeoCustomer(roCustomer);
        }
    }

我正在尝试将方法updategeocustomer中的roCustomer对象传递给GeoCodueUpdateEventPublisher。我的updateGeoCustomer看起来像这样

 public virtual void UpdateGeoCustomer(object roCustomer)
    {
        Publish(roCustomer); 
    }

我想知道这是否是传递此对象的正确方法?然后我将调用方法发布,它看起来像这样。

 protected virtual void Publish(object roCustomer)
    {

            PublishMessage publishMessage = CreatePublishMessage(roCustomer);

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

    }

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

2 个答案:

答案 0 :(得分:0)

将它作为“对象”而不是它的类型或ICustomer接口传递它本身并没有“错误”,它实际上取决于具体的用例和编码风格。如果你需要访问它上面的属性并将它作为对象传递,你需要将它转换为然后这是一个不必要的坏方法去处理事情(即,如果你将它作为“对象”传递给它更新方法,然后它去(MyObjectType)obj.Whatever =“Something”;然后你做了一些有问题的事情。)

答案 1 :(得分:0)

正确的做法是使用正确的类型声明接收函数。除非您的函数需要处理 ANY 类型的参数。