ساخت فیلدها با FieldBuilder
ساخت فیلدها با FieldBuilder
این راهنما نشان میدهد چگونه یک فیلد Word را از ابتدا در Aspose.Words FOSS برای .NET با استفاده از FieldBuilder and FieldArgumentBuilder، به جای کار با فیلدی که قبلاً در یک سند وجود دارد. برای خواندن، بهروزرسانی یا حذف فیلدهای موجود، به کار با فیلدها راهنما.
ایجاد یک فیلد با FieldBuilder
FieldBuilder یک فیلد را از توکنهای کد فیلد — آرگومانها و سوئیچها — میسازد. یکی را با new FieldBuilder(fieldType) بسازید و FieldType فیلدی که میخواهید بسازید را پاس کنید. آرگومانها را با متد overload شده AddArgument(argument) اضافه کنید که میتواند یک string، int، double، یک FieldBuilder تو در تو، یا یک FieldArgumentBuilder بپذیرد. سوئیچها را با متدهای overload شده AddSwitch(switchName)، AddSwitch(switchName, switchArgument) (string)، یا AddSwitch(switchName, switchArgument) (int/double) اضافه کنید.
درج فیلد ساختهشده
هنگامی که یک FieldBuilder آرگومانها و سوئیچهای خود را دارد، BuildAndInsert(refNode) را فراخوانی کنید تا آن را در سند درج کنید — یک overload یک گره Inline را میپذیرد و فیلد را پیش از آن وارد میکند، و دیگری یک Paragraph را میپذیرد و فیلد را در انتهای آن پاراگراف وارد میکند.
ترکیب آرگومانهای پیچیده با FieldArgumentBuilder
FieldArgumentBuilder یک آرگومان فیلد پیچیده میسازد که از فیلدها، نودها و متن ساده تشکیل شده است، برای مواردی که یک آرگومان تنها به یک رشته ساده کافی نیست. یکی را با new FieldArgumentBuilder() بسازید، سپس AddText(text) را فراخوانی کنید تا متن ساده اضافه کنید، AddNode(node) را برای افزودن یک نود Inline، یا AddField(fieldBuilder) را برای تو در تو کردن فیلد دیگری (ساختهشده با FieldBuilder خودش) داخل آرگومان. FieldArgumentBuilder تکمیلشده را به FieldBuilder.AddArgument(argument) بدهید تا به عنوان یکی از آرگومانهای فیلد بیرونی استفاده شود.
نکات و بهترین شیوهها
- از
FieldBuilderاستفاده کنید زمانی که یک نوع فیلد را میسازید که توسط هیچیک از کلاسهای فیلد اختصاصی (مانندFieldDateیاFieldSymbol) پشتیبانی نمیشود، یا وقتی کدهای فیلد را بهصورت برنامهنویسی از دادهها تولید میکنید نه اینکه بهدست خودتان بنویسید. - یک فیلد فرزند را داخل آرگومان فیلد بیرونی با
FieldBuilder.AddArgument(FieldBuilder)برای موارد ساده تو در تو کنید، یا وقتی آرگومان بیش از یک فیلد است، یک آرگومان ترکیبی از متن، نودها و فیلدهای تو در تو باFieldArgumentBuilderبسازید. - بارگذاری
BuildAndInsert(refNode)را انتخاب کنید که با موقعیتی که میخواهید فیلد قرار بگیرد مطابقت دارد — قبل از یک نودInlineخاص، یا در انتهای یکParagraph. - پس از
BuildAndInsert، نتیجه را همانند هر فیلد دیگر در درخت رفتار کنید — برای مثال، اگر نوع فیلد نیاز به محاسبه مجدد صریح دارد،Update()را روی آن فراخوانی کنید.
مشکلات رایج
| مسئله | دلیل | رفع |
|---|---|---|
BuildAndInsert مکان نادرست را هدف میگیرد | بارگذاری اشتباه برای نقطهی درج مورد نظر استفاده شد | یک گره Inline را برای درج قبل از آن ارسال کنید، یا یک Paragraph را برای درج در انتهای آن |
| یک آرگومان فیلد نمیتواند متن ساده و یک گره را همزمان بپذیرد | به جای یک آرگومان ترکیبی، AddArgument با یک string/int/double واحد فراخوانی شد | آرگومان ترکیبی را با FieldArgumentBuilder (AddText، AddNode، AddField) بسازید و آن را به AddArgument پاس دهید |
| مقدار سوئیچ در کد فیلد ساختهشده شناسایی نمیشود | AddSwitch(switchName) استفاده شد در حالی که سوئیچ واقعاً به یک آرگومان نیاز دارد | از overload AddSwitch(switchName, switchArgument) با مقدار رشتهای، عددی (int) یا عددی (double) سوئیچ استفاده کنید |
FAQ
چه زمانی باید از FieldBuilder استفاده کنم به جای درج یک کد فیلد از پیش ساخته شده؟
از FieldBuilder زمانی استفاده کنید که به کنترل صریح بر آرگومانها و سوئیچهای یک فیلد هنگام ساخت برنامهنویسی آن نیاز دارید، نه اینکه یک رشته کد فیلد از پیش ساخته شده را درج کنید.
چگونه میتوانم بیش از یک آرگومان به یک فیلد اضافه کنم؟
برای هر آرگومان یک بار AddArgument را فراخوانی کنید — این متد برای string، int، double، یک FieldBuilder تو در تو و FieldArgumentBuilder بارگذاری شده است.
آیا میتوانم فیلدی بسازم که آرگومان آن ترکیبی از متن و فیلد دیگری باشد؟
بله — از FieldArgumentBuilder استفاده کنید، در صورت نیاز AddText، AddNode و AddField را فراخوانی کنید، سپس آن را به FieldBuilder.AddArgument پاس دهید.
چگونه میتوانم فیلد ساختهشده را بهطور واقعی در سند قرار دهم؟
متد BuildAndInsert(refNode) را فراخوانی کنید و یا یک گره Inline (که قبل از آن درج میشود) یا یک Paragraph (که در انتهای آن درج میشود) را پاس دهید.
API Reference خلاصه
| کلاس/متد | توضیح |
|---|---|
FieldBuilder | یک فیلد را از توکنهای کد فیلد (آرگومانها و سوئیچها) میسازد |
FieldBuilder(fieldType) | سازندهای که FieldType را برای ساخت میگیرد |
FieldBuilder.AddArgument(argument) | یک آرگومان اضافه میکند (string، int، double، FieldBuilder یا FieldArgumentBuilder) |
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument) | یک سوئیچ فیلد اضافه میکند، با مقدار یا بدون مقدار |
FieldBuilder.BuildAndInsert(refNode) | فیلد ساخته شده را قبل از یک گره Inline یا در انتهای یک Paragraph درج میکند |
FieldArgumentBuilder | یک آرگومان فیلد پیچیده را از متن، گرهها و فیلدهای تو در تو میسازد |
FieldArgumentBuilder.AddText(text) | متن ساده را به آرگومان اضافه میکند |
FieldArgumentBuilder.AddNode(node) | یک گره Inline را به آرگومان اضافه میکند |
FieldArgumentBuilder.AddField(fieldBuilder) | یک فیلد ساختهشده توسط FieldBuilder را درون آرگومان تو در تو میکند |