将不同的参数传递给函数

时间:2017-08-02 08:06:51

标签: c# asp.net asp.net-web-api

我正在处理文档,尝试通过网页创建docx,基本上我说我想要一个表,一个段落它应该附加到我的文档,在背景我有一个功能处理这个东西这个方式:

public void CreateDoc(params object[] document)
{
    var stream = new MemoryStream();
    using (WordprocessingDocument doc = WordprocessingDocument.Create(stream, WordprocessingDocumentType.Document, true))
    {
        MainDocumentPart mainPart = doc.AddMainDocumentPart();

        new Document(new Body()).Save(mainPart);

        Body body = mainPart.Document.Body;

        foreach (var docSections in document)
        {
           body.Append(new Paragraph(new ParagraphProperties(),
           new Run((Run)docSections)));
        }

    }
    stream.Seek(0, SeekOrigin.Begin);
    Directory.CreateDirectory(HostingEnvironment.MapPath(DOCUMENTSLOCATION));
    System.IO.File.WriteAllBytes(HostingEnvironment.MapPath("~/Files/test5.docx"), stream.ToArray());



  }

注意在CreateDoc中收到的参数,它可以在对象内部接收无限数量的参数,这就是我想要的,因为我不知道我的文档将有多少部分(表格,段落,图像)等。) -

我的问题是我需要传递更多与文件构造无直接关系的参数,例如:文件名。我的想法是将它作为CreateDoc函数中的第二个参数传递,但我如何从另一侧传递它?

任何帮助?

2 个答案:

答案 0 :(得分:1)

如果您已经定义了特定参数,则始终可以将其传递给函数。例如,如果您确定在调用此函数时始终需要filename作为参数,则可以修改函数参数:

public void CreateDoc(string filename, params object[] document)
{
   ...
}

然后你可以这样称呼它:

CreateDoc("filename.docx", <param1>, <param2>);

答案 1 :(得分:0)

第一步:

您可以使用your own Structure代替Object传递数据 与Data TypeData Content

一样

第二步:

检查参数的DataType然后管理