我有一个简单的问题。我有一个对象,我试图传递给另一个类中的不同方法。
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));
}
}
我只是想验证我是否正确传递了这个对象
答案 0 :(得分:0)
将它作为“对象”而不是它的类型或ICustomer接口传递它本身并没有“错误”,它实际上取决于具体的用例和编码风格。如果你需要访问它上面的属性并将它作为对象传递,你需要将它转换为然后这是一个不必要的坏方法去处理事情(即,如果你将它作为“对象”传递给它更新方法,然后它去(MyObjectType)obj.Whatever =“Something”;然后你做了一些有问题的事情。)
答案 1 :(得分:0)
正确的做法是使用正确的类型声明接收函数。除非您的函数需要处理 ANY 类型的参数。