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作为函数的参数,然后才可以访问。不清楚你一直在问什么如果那是你的问题。是的,一切都解决了谢谢你对不起,我没有问对问题很好的表达方式——扩大他的措辞,基本上,为了正确起见,您希望尽可能具体,如果函数要处理更通用的内容,则只将类型放宽为更通用的内容。