需要返回某个东西的void方法

The*_*ner -1 c# linq-to-sql

我的代码中有一个必须具有void返回类型的方法,它只能采用一个特定的参数.我需要从中归还一些东西.

为您提供详细信息:我有一个WCF服务,它具有SQL服务器访问权限.它有一个名为SQLMetal.exe的程序生成的代码.这给了我一个部分方法的部分类(DataContext).我正在构建这个partial类的另一部分,这些部分方法就像'InsertUser'或'DeleteUser'.它们没有在partial类的其他部分实现,但我想这意味着我必须实现它们.这很好,但是如果它们是部分方法,它们必须有一个void返回类型.

那么如果我想从其中一个中返回一些内容怎么办?我的意思是,应用程序可以连接到此服务,并可以使用它来访问数据库信息.该应用程序需要知道服务端是否存在错误.

所以它是一个带有void返回类型和一组预定义参数的部分方法.

该怎么办?

编辑:更多细节!

首先,为什么我不能改变生成的代码?嗯,这是一个很好的建议,但我对此表示担忧.它生成的原因是为了在数据库发生变化并且必须重新生成代码时尽量减少未来的编码问题.

其次,一些代码:

[System.Data.Linq.Mapping.DatabaseAttribute(Name = "HVD01")]

public partial class HydraDataContext : System.Data.Linq.DataContext

{



    private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();



    #region Extensibility Method Definitions

    partial void OnCreated();

    partial void InsertClient(Client instance);

    partial void UpdateClient(Client instance);
Run Code Online (Sandbox Code Playgroud)

这就是生成代码的相关部分.

那是我的一部分.这是另一个与生成的部分结合的部分类.

public void UpdateClient(Client client)
    {
        //Primary key can't be zero
        if (client.ClientID == 0)
            return;


        dc.Clients.Attach(client, true);

        dc.SubmitChanges();

    }
Run Code Online (Sandbox Code Playgroud)

显然,有可能需要返回的东西.

异常怎么样?好吧,如果我在WCF服务上抛出一个,我认为应用程序不会得到它(我可能在这里错了).该应用程序使用该服务,但我不认为在该服务上抛出异常将到达消费应用程序.是吗?

也许只是改变功能是最好的.我只是想到了重点是尽可能多地保留生成的代码,以防你需要重新生成它.

再次感谢.

Dav*_*vid 8

你没有从void方法中返回任何东西.如果你以某种方式做的话,调用代码不会指望你,并且不知道如何处理它.

这很好,但是如果它们是部分方法,它们必须有一个void返回类型.

为什么他们是部分方法?如果生成的代码中不存在它们,那么您可以根据需要在部分类中定义它们.如果它们存在,不要试图改变它们的足迹,否则你会破坏某些东西.

该应用程序需要知道服务端是否存在错误.

这就是例外情况.如果出现错误,请抛出异常.


Moo*_*ice 6

我希望你会在这种情况下抛出一个异常来通知客户端出了什么问题:

throw new Exception("I do not believe that parameter means what you think it means");
Run Code Online (Sandbox Code Playgroud)


Mar*_*k W 6

你可以把你想要的参数作为参考.

 void DoSomethingOnService(ref object value);
Run Code Online (Sandbox Code Playgroud)