คุณใช้เทมเพลตสด ReSharper 4+ อะไรสำหรับ C # [ปิด]


94

คุณใช้เทมเพลต ReSharper 4.0 อะไรสำหรับC #

มาแบ่งปันกันในรูปแบบต่อไปนี้:


[หัวข้อ]

คำอธิบายเพิ่มเติม

ทางลัด:ทางลัด
มีให้ใน: [AvailabilitySetting]

// Resharper template code snippet
// comes here

คุณสมบัติมาโคร (ถ้ามี):

  • Macro1 - ค่า - EditableOccurence
  • Macro2 - ค่า - EditableOccurence


สิ่งนี้ควรเป็นโปรแกรมเมอร์ SEแทนเพราะเป็นเรื่องส่วนตัวหรือไม่
Timwi

คำถามนี้ไม่ได้สร้างสรรค์และมีข้อมูลมากมายเกี่ยวกับเทมเพลตสดที่มีความคมชัดและเทมเพลต Visual Studio programmingsolved.blogspot.com/2014/04/snippet-away.html
Thulani Chivandikwa

คำตอบ:


31

แลมด้าธรรมดา

เรียบง่ายมีประโยชน์มาก - แลมด้าตัวน้อย:

ทางลัด : x

ว่าง : C # ที่อนุญาตให้ใช้นิพจน์

x => x.$END$

มาโคร: ไม่มี


22

ใช้วิธี 'Dispose (bool)'

ใช้รูปแบบการกำจัดของ Joe Duffy

ทางลัด:ทิ้ง

มีให้ใน:ไฟล์ C # 2.0+ ที่อนุญาตให้มีการประกาศสมาชิกประเภท

public void Dispose()
{
    Dispose(true);
    System.GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
    if (!disposed)
    {
        if (disposing)
        {
            if ($MEMBER$ != null)
            {
                $MEMBER$.Dispose();
                $MEMBER$ = null;
            }
        }

        disposed = true;
    }
}

~$CLASS$()
{
    Dispose(false);
}

private bool disposed;

คุณสมบัติของมาโคร :

  • MEMBER - แนะนำตัวแปรของ System.IDisposable - สามารถแก้ไขได้ # 1
  • CLASS - มีชื่อประเภท

14

สร้างอุปกรณ์ทดสอบหน่วยใหม่สำหรับบางประเภท

ทางลัด: ntf
มีให้ใน:ไฟล์ C # 2.0+ ที่อนุญาตให้มีการประกาศสมาชิกประเภทหรือการประกาศเนมสเปซ

[NUnit.Framework.TestFixtureAttribute]
public sealed class $TypeToTest$Tests
{
    [NUnit.Framework.TestAttribute]
    public void $Test$()
    {
        var t = new $TypeToTest$()
        $END$
    }
}

มาโคร:

  • TypeToTest - ไม่มี - # 2
  • ทดสอบ - ไม่มี - V

13

ตรวจสอบว่าสตริงเป็นโมฆะหรือว่างเปล่า

หากคุณใช้. Net 4 คุณอาจต้องการใช้ string.IsNullOrWhiteSpace ()

ทางลัด : sne

มีให้ใน : C # 2.0+ ที่อนุญาตให้ใช้นิพจน์ได้

string.IsNullOrEmpty($VAR$)

คุณสมบัติมาโคร :

  • VAR - แนะนำตัวแปรประเภทสตริง แก้ไขได้ = จริง

11

สร้างกรณีทดสอบหน่วยสแตนด์อะโลนใหม่

ทางลัด: ntc
มีให้ใน: C # 2.0+ ไฟล์ที่อนุญาตให้มีการประกาศสมาชิกประเภท

[NUnit.Framework.TestAttribute]
public void $Test$()
{
    $END$
}

มาโคร:

  • ทดสอบ - ไม่มี - V

10

ประกาศ log4net logger สำหรับประเภทปัจจุบัน

ทางลัด:บันทึก

มีให้ใน:ไฟล์ C # 2.0+ ที่อนุญาตให้มีการประกาศสมาชิกประเภท

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof($TYPE$));

คุณสมบัติของมาโคร :

  • TYPE - มีชื่อประเภท

ด้วยความคมชัดอีกครั้งทำไมไม่ใช้สิ่งนี้? ส่วนตัวคงที่แบบอ่านอย่างเดียว ILog _Logger = LogManager.GetLogger (typeof ($ CurrType $)); กับ $ CurrType $: มีชื่อประเภท
Henrik

เพราะถ้าฉันเปลี่ยนชื่อประเภทในภายหลังฉันจะต้องอัปเดตบรรทัดของรหัสนั้นด้วย เหมืองมีพลังมากขึ้น
Chris Brandsma

ReSharper จะเปลี่ยนชื่ออินสแตนซ์ทั้งหมดของชื่อประเภทโดยอัตโนมัติ GetType () ช้ากว่าด้วย
Richard Dingwall

9

การทดสอบหน่วยทดสอบ MS

การทดสอบ MS Test Unit ใหม่โดยใช้ไวยากรณ์ AAA และหลักการตั้งชื่อที่พบในArt Of Unit Testing

ทางลัด:การทดสอบ (หรือ tst หรืออะไรก็ได้ที่คุณต้องการ)
มีอยู่ในไฟล์: C # 2.0+ ที่อนุญาตให้มีการประกาศสมาชิกประเภท

[TestMethod]
public void $MethodName$_$StateUnderTest$_$ExpectedBehavior$()
{
    // Arrange
    $END$

    // Act


    // Assert

}

คุณสมบัติมาโคร (ถ้ามี):

  • MethodName - ชื่อของวิธีการภายใต้การทดสอบ
  • StateUnderTest - สถานะที่คุณกำลังพยายามทดสอบ
  • พฤติกรรมที่คาดหวัง - สิ่งที่คุณคาดหวังให้เกิดขึ้น

8

ตรวจสอบว่าตัวแปรเป็นโมฆะหรือไม่

ทางลัด: ifn
มีให้ในไฟล์: C # 2.0+

if (null == $var$)
{
    $END$
}

ตรวจสอบว่าตัวแปรไม่เป็นโมฆะ

ทางลัด: ifnn
มีให้ใน: C # 2.0+ ไฟล์

if (null != $var$)
{
    $END$
}

15
การเปลี่ยนจาก C ++ เป็น C # นั้นปฏิบัติต่อคุณอย่างไร
Ty.

ไปได้ดีกับ 'Execute smart
complete

“ โยดาเงื่อนไข” ที่ดี !! ... วิธีการเข้ารหัสแบบนี้ไม่ฉลาด ;-))
bytedev

7

เขียนสรุปตาม StyleCop สำหรับตัวสร้างคลาส

(หากคุณเบื่อที่จะพิมพ์สรุปมาตรฐานยาว ๆ สำหรับตัวสร้างทุกตัวเพื่อให้สอดคล้องกับกฎ StyleCop SA1642)

ทางลัด: csum

มีให้ใน: C # 2.0+

Initializes a new instance of the <see cref="$classname$"/> class.$END$

มาโคร:

  • classname - มีชื่อประเภท - V

7

Assert.AreEqual

เทมเพลตอย่างง่ายเพื่อเพิ่มคำยืนยันในการทดสอบหน่วย

ทางลัด : ae
มีให้ใน : ในไฟล์ C # 2.0+ ที่อนุญาตคำสั่ง

Assert.AreEqual($expected$, $actual$);$END$

รุ่นที่คล่องแคล่ว:

Assert.That($expected$, Is.EqualTo($actual$));$END$

7

Lambdas มากมาย

สร้างนิพจน์แลมบ์ดาด้วยการประกาศตัวแปรที่แตกต่างกันเพื่อให้ง่ายต่อการทำรัง

ทางลัด: la, lb, lc

มีอยู่ในไฟล์ C # 3.0+ ที่อนุญาตให้ใช้นิพจน์หรือส่วนคำสั่งค้นหา

laถูกกำหนดให้เป็น:

x => x.$END$

ปอนด์ถูกกำหนดให้เป็น:

y => y.$END$

lcถูกกำหนดให้เป็น:

z => z.$END$

สิ่งนี้คล้ายกับ Sean Kearon ด้านบนยกเว้นฉันกำหนดเทมเพลตแลมบ์ดาหลายรายการเพื่อให้ง่ายต่อการซ้อนแลมบ์ดา " la " มักใช้กันมากที่สุด แต่คำอื่น ๆ จะมีประโยชน์เมื่อจัดการกับนิพจน์เช่นนี้:

items.ForEach(x => x.Children.ForEach(y => Console.WriteLine(y.Name)));

สามารถใช้ชื่อ x, y สำหรับอาร์กิวเมนต์แลมบ์ดาได้หรือไม่ หากคุณมีแลมด้าที่ซ้อนกันสองสามระดับคุณอาจไม่ต้องการจดจำว่า x, y, z หมายถึงอะไรในแต่ละระดับ เมื่อพิจารณาจากตัวอย่างของคุณฉันจะใช้ itemsForEach (item => ... และ item.ChildrenForEach (child => ... ดังนั้นในตอนท้ายฉันจะมี child.Name แทน y.Name ฉันไม่ ไม่คิดว่าการตั้งชื่อสำหรับอาร์กิวเมนต์ lambdas สามารถถือว่าคล้ายคลึงกับสำหรับดัชนีลูป i, j, k
Ilya Ivanov

6

รอมันอยู่...

หยุดการป้อนข้อมูลของผู้ใช้ชั่วคราวก่อนสิ้นสุดแอปพลิเคชันคอนโซล

ทางลัด:หยุดชั่วคราว

มีให้ใน:ไฟล์ C # 2.0+ ที่อนุญาตให้ใช้คำสั่ง

System.Console.WriteLine("Press <ENTER> to exit...");
System.Console.ReadLine();$END$

ฉันจะใช้Console.ReadKey(true);และอนุญาตให้กดปุ่มใดก็ได้
MasterMastic

6

การสร้างคุณสมบัติพึ่งพา

สร้างคุณสมบัติการพึ่งพา

ทางลัด: dp
มีให้ใน: C # 3.0 ที่อนุญาตให้ประกาศสมาชิก

public static readonly System.Windows.DependencyProperty $PropertyName$Property =
        System.Windows.DependencyProperty.Register("$PropertyName$",
                                                   typeof ($PropertyType$),
                                                   typeof ($OwnerType$));

    public $PropertyType$ $PropertyName$
    {
        get { return ($PropertyType$) GetValue($PropertyName$Property); }
        set { SetValue($PropertyName$Property, value); }
    }

$END$

คุณสมบัติมาโคร (ถ้ามี):

PropertyName - ไม่มีมาโคร - # 3
PropertyType - คาดเดาประเภทที่คาดไว้ ณ จุดนี้ - # 2
OwnerType - มีชื่อประเภท - ไม่มีเหตุการณ์ที่แก้ไขได้


5

แจ้งทรัพย์สินเปลี่ยนแปลง

นี่เป็นรายการโปรดของฉันเพราะฉันใช้บ่อยและได้ผลมากสำหรับฉัน

ทางลัด : npc

มีให้ใน : C # 2.0+ ที่อนุญาตให้ใช้นิพจน์ได้

if (value != _$LOWEREDMEMBER$)
{
  _$LOWEREDMEMBER$ = value;
  NotifyPropertyChanged("$MEMBER$");
}

มาโคร :

  • MEMBER - มีชื่อประเภทสมาชิก ไม่สามารถแก้ไขได้ หมายเหตุ: ตรวจสอบให้แน่ใจว่ารายการนี้อยู่ในรายการแรก
  • LOWEREDMEMBER - ค่าของ MEMBER ที่มีอักขระตัวแรกเป็นตัวพิมพ์เล็ก ไม่สามารถแก้ไขได้

การใช้งาน : ภายในตัวตั้งค่าคุณสมบัติเช่นนี้:

private string _dateOfBirth;
public string DateOfBirth
{
   get { return _dateOfBirth; }
   set
   {
      npc<--tab from here
   }
}

สมมติว่าตัวแปรสำรองของคุณเริ่มต้นด้วย "_" แทนที่สิ่งนี้ด้วยสิ่งที่คุณใช้ นอกจากนี้ยังถือว่าคุณมีวิธีการเปลี่ยนแปลงคุณสมบัติดังนี้:

private void NotifyPropertyChanged(String info)
{
   if (PropertyChanged != null)
   {
      PropertyChanged(this, new PropertyChangedEventArgs(info));
   }
}

ในความเป็นจริงเวอร์ชันนี้ที่ฉันใช้คือแลมบ์ดา ('เพราะฉันชอบแลมบ์ดาของฉัน!) และสร้างสิ่งต่อไปนี้ หลักการก็เหมือนกับข้างบน

public decimal CircuitConductorLive
{
   get { return _circuitConductorLive; }
   set { Set(x => x.CircuitConductorLive, ref _circuitConductorLive, value); }
}

นั่นคือตอนที่ฉันไม่ได้ใช้PostSharp ที่สง่างามและมีประโยชน์อย่างยิ่งในการทำสิ่ง INotifyPropertyChanged ทั้งหมดโดยไม่ต้องใช้ความพยายามนั่นคือ


5

ทางลัดที่คาดหวังด่วน

เพียงทางลัดสั้น ๆ เพื่อเพิ่มคุณสมบัติการทดสอบหน่วยของฉัน

ทางลัด : ee

มีให้ใน : มีให้ในไฟล์: C # 2.0+ ที่อนุญาตให้มีการประกาศสมาชิกประเภท

[ExpectedException(typeof($TYPE$))]

เพียงแค่ทราบสั้น ๆ ว่าตอนนี้เป็นเวอร์ชันสองสามที่คาดว่าคาดว่าจะได้รับการเลิกใช้ใน NUnit เพื่อสนับสนุนการใช้ AssertThrows <>
Stécy

ใช่กรุณาโปรดหยุดทุกคนที่ใช้ ExpectedExceptionAttribute ยังคงเห็น devs ใช้ MSTest ใช้นี้แม้วันนี้ :-(
bytedev

5

AutoMapper การแมปคุณสมบัติ

ทางลัด: fm

มีให้ใน:ไฟล์ C # 2.0+ ที่อนุญาตให้ใช้คำสั่ง

.ForMember(d => d$property$, o => o.MapFrom(s => s$src_property$))
$END$

มาโคร:

  • คุณสมบัติ - เหตุการณ์ที่แก้ไขได้
  • src_property - เหตุการณ์ที่แก้ไขได้

บันทึก:

ฉันปล่อยแลมด้า "dot" ออกเพื่อที่ฉันจะได้ตี ทันทีและรับทรัพย์สิน intellisense ต้องใช้ AutoMapper ( http://automapper.codeplex.com/ )


4

สร้างต้นขั้วกรณีทดสอบสำหรับ NUnit

สิ่งนี้สามารถใช้เป็นเครื่องเตือนความจำ (ของฟังก์ชันการใช้งานหรือทดสอบ) ที่ปรากฏในตัวทดสอบหน่วย (เป็นการทดสอบที่ละเว้นอื่น ๆ )

ทางลัด: nts
พร้อมใช้งานในไฟล์: C # 2.0+ ที่อนุญาตให้มีการประกาศสมาชิกประเภท

[Test, Ignore]
public void $TestName$()
{
    throw new NotImplementedException();
}
$END$

ฉันเปลี่ยนรูปแบบนี้ แต่มี Assert ที่ชัดเจนล้มเหลว () ในเนื้อหา: aleriel.com/blog/2010/04/07/replace-paper-with-unit-tests
Adam Lear

4

เรียกใช้หากจำเป็น

มีประโยชน์เมื่อพัฒนาแอปพลิเคชัน WinForms ที่ควรเรียกใช้เมธอดจากเธรดที่ไม่ใช่ UI และวิธีการนั้นควรเรียกใช้เธรด UI

ทางลัด : inv

มีให้ใน : อนุญาตให้ใช้คำสั่งไฟล์ C # 3.0+

if (InvokeRequired)
{
    Invoke((System.Action)delegate { $METHOD_NAME$($END$); });
    return;
}

มาโคร

  • METHOD_NAME - มีชื่อสมาชิกประเภท

โดยปกติคุณจะใช้เทมเพลตนี้เป็นคำสั่งแรกในวิธีการที่กำหนดและผลลัพธ์จะคล้ายกับ:

void DoSomething(Type1 arg1)
{
    if (InvokeRequired)
    {
        Invoke((Action)delegate { DoSomething(arg1); });
        return;
    }

    // Rest of method will only execute on the correct thread
    // ...
}

4

ใหม่ C # Guid

สร้างอินสแตนซ์ System.Guid ใหม่เริ่มต้นเป็นค่า guid ที่สร้างขึ้นใหม่

ทางลัด: csguid มีให้ใน:ในไฟล์ C # 2.0+

new System.Guid("$GUID$")

คุณสมบัติของมาโคร :

  • GUID - GUIDใหม่ - เท็จ

ReSharper เวอร์ชันล่าสุดตอนนี้มีทางลัดnguidตามค่าเริ่มต้น
Jamie Keeling

จริง แต่จะสร้างค่า guid เท่านั้นไม่ได้เริ่มต้นประเภทใน C #
codekaizen

4

วิธีทดสอบ MSTest

มันค่อนข้างง่อย แต่มีประโยชน์ หวังว่าจะมีคนได้ประโยชน์จากมันบ้าง

ทางลัด: testMethod

มีให้ใน: C # 2.0

[TestMethod]
public void $TestName$()
{
    throw new NotImplementedException();

    //Arrange.

    //Act.

    //Assert.
}

$END$

4

วิธีการตั้งค่า NUnit

Shortcut: setup
Available in: Available in: C # 2.0+ files where type member Declaration is allowed

[NUnit.Framework.SetUp]
public void SetUp()
{
    $END$
}

จุดดี. ฉันนึกถึงบางกรณีที่คุณอาจต้องการติดตั้งการทดสอบคลาสย่อย (บางทีถ้าคุณต้องการเขียนการทดสอบ "สัญญา" ซึ่งชุดของการยืนยันควรใช้กับวัตถุจำนวนมาก) แต่ฉันคิดว่าในกรณีทั่วไปเสมือน ไม่จำเป็น ฉันจะแก้ไขให้
พาราควอต

การปรับปรุงนี้ ............ $ classUnderTestType ส่วนตัว $ _classUnderTest; [NUnit.Framework.SetUp] โมฆะสาธารณะ SetUp () {_classUnderTest = ใหม่ $ classUnderTestType $ ($ END $); }
bytedev

4

วิธี NUnit Teardown

Shortcut: teardown
มีให้ใน:ใช้ได้ในไฟล์: C # 2.0+ ที่อนุญาตให้มีการประกาศสมาชิกประเภท

[NUnit.Framework.TearDown]
public void TearDown()
{
    $END$
}

3

สร้างการตรวจสอบความมีสติเพื่อให้แน่ใจว่าอาร์กิวเมนต์จะไม่เป็นโมฆะ

ทางลัด: eann
มีให้ในไฟล์: C # 2.0+ ที่อนุญาตให้ใช้คำสั่ง type

Enforce.ArgumentNotNull($inner$, "$inner$");

มาโคร:

  • ภายใน - แนะนำพารามิเตอร์ - # 1

หมายเหตุ: แม้ว่าตัวอย่างข้อมูลนี้กำหนดเป้าหมายไลบรารี. NET Lokad.Shareแบบโอเพนซอร์สแต่ก็สามารถปรับให้เข้ากับการตรวจสอบอาร์กิวเมนต์ประเภทอื่น ๆ ได้อย่างง่ายดาย


3

COM คลาสใหม่

ทางลัด : comclass

มีอยู่ในไฟล์ C # 2.0+ ที่อนุญาตให้มีการประกาศสมาชิกประเภทหรือการประกาศเนมสเปซ

[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("$GUID$")]
public class $NAME$ : $INTERFACE$
{
    $END$
}

มาโคร

  • GUID - GUID ใหม่
  • NAME - แก้ไขได้
  • INTERFACE - แก้ไขได้

2
เทมเพลตที่ดี แต่อาจเหมาะกับเทมเพลตไฟล์มากกว่าเทมเพลตแบบสด
Drew Noakes

3

ไม่จำเป็นต้องยืนยันการเรียกใช้

มีประโยชน์เมื่อพัฒนาแอปพลิเคชัน WinForms ที่คุณต้องการให้แน่ใจว่าโค้ดกำลังทำงานบนเธรดที่ถูกต้องสำหรับรายการที่กำหนด โปรดทราบว่าการดำเนินการControlISynchronizeInvoke

ทางลัด : ani

มีให้ใน : อนุญาตให้ใช้คำสั่งไฟล์ C # 2.0+

Debug.Assert(!$SYNC_INVOKE$.InvokeRequired, "InvokeRequired");

มาโคร

  • SYNC_INVOKE - แนะนำตัวแปรของSystem.ComponentModel.ISynchronizeInvoke

2

Trace - Writeline พร้อมรูปแบบ

เทมเพลตที่ง่ายมากในการเพิ่มการติดตามด้วยสตริงที่จัดรูปแบบ (เช่น Debug.WriteLine รองรับแล้ว)

ทางลัด: twlf
มีให้ในไฟล์: C # 2.0+ ที่อนุญาตให้ใช้คำสั่ง

Trace.WriteLine(string.Format("$MASK$",$ARGUMENT$));

คุณสมบัติของมาโคร:

  • อาร์กิวเมนต์ - value- EditableOccurence
  • หน้ากาก - "{0}"- แก้ไขได้

1

ใหม่ Typemock isolator ปลอม

ทางลัด : ของปลอม
มีให้ใน : [ในไฟล์ c # 2.0 ที่อนุญาตให้ใช้คำสั่ง]

$ TYPE $ $ ชื่อ $ Fake = Isolate.Fake.Instance ();
แยก WhenCalled (() => $ Name $ Fake.)

คุณสมบัติมาโคร:
* $ TYPE $ - ประเภทคำแนะนำสำหรับตัวแปรใหม่
* $ Name $ - ค่าของตัวแปรอื่น ( Type ) ที่มีอักขระตัวแรกเป็นตัวพิมพ์เล็ก


1

เนื่องจากฉันทำงานกับ Unity ในตอนนี้ฉันจึงคิดบางอย่างที่จะทำให้ชีวิตของฉันง่ายขึ้น:


พิมพ์นามแฝง

ทางลัด : ta
มีจำหน่ายใน : * .xml; * .config

<typeAlias alias="$ALIAS$" type="$TYPE$,$ASSEMBLY$"/>

ประเภทการประกาศ

นี่คือประเภทที่ไม่มีชื่อและไม่มีข้อโต้แย้ง

ทางลัด : tp
มีจำหน่ายใน : * .xml; * .config

<type type="$TYPE$" mapTo="$MAPTYPE$"/>

ประเภทประกาศ (พร้อมชื่อ)

นี่คือประเภทที่มีชื่อและไม่มีข้อโต้แย้ง

ทางลัด : tn
มีจำหน่ายใน : * .xml; * .config

<type type="$TYPE$" mapTo="$MAPTYPE$" name="$NAME$"/>

พิมพ์ประกาศด้วยตัวสร้าง

นี่คือประเภทที่มีชื่อและไม่มีข้อโต้แย้ง

ทางลัด : tpc
มีให้ใน : * .xml; * .config

<type type="$TYPE$" mapTo="$MAPTYPE$">
  <typeConfig>
    <constructor>
        $PARAMS$
    </constructor>
  </typeConfig>
</type>

ฯลฯ ....


1

log4net XML Configuration Block

คุณสามารถนำเข้าเทมเพลตได้โดยตรง:

<TemplatesExport family="Live Templates">
  <Template uid="49c599bb-a1ec-4def-a2ad-01de05799843" shortcut="log4" description="inserts log4net XML configuration block" text="  &lt;configSections&gt;&#xD;&#xA;    &lt;section name=&quot;log4net&quot; type=&quot;log4net.Config.Log4NetConfigurationSectionHandler,log4net&quot; /&gt;&#xD;&#xA;  &lt;/configSections&gt;&#xD;&#xA;&#xD;&#xA;  &lt;log4net debug=&quot;false&quot;&gt;&#xD;&#xA;    &lt;appender name=&quot;LogFileAppender&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;&#xD;&#xA;      &lt;param name=&quot;File&quot; value=&quot;logs\\$LogFileName$.log&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;AppendToFile&quot; value=&quot;false&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;RollingStyle&quot; value=&quot;Size&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;MaxSizeRollBackups&quot; value=&quot;5&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;MaximumFileSize&quot; value=&quot;5000KB&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;StaticLogFileName&quot; value=&quot;true&quot; /&gt;&#xD;&#xA;&#xD;&#xA;      &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;&#xD;&#xA;        &lt;param name=&quot;ConversionPattern&quot; value=&quot;%date [%3thread] %-5level %-40logger{3} - %message%newline&quot; /&gt;&#xD;&#xA;      &lt;/layout&gt;&#xD;&#xA;    &lt;/appender&gt;&#xD;&#xA;&#xD;&#xA;    &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot;&gt;&#xD;&#xA;      &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;&#xD;&#xA;        &lt;param name=&quot;ConversionPattern&quot; value=&quot;%message%newline&quot; /&gt;&#xD;&#xA;      &lt;/layout&gt;&#xD;&#xA;    &lt;/appender&gt;&#xD;&#xA;&#xD;&#xA;    &lt;root&gt;&#xD;&#xA;      &lt;priority value=&quot;DEBUG&quot; /&gt;&#xD;&#xA;      &lt;appender-ref ref=&quot;LogFileAppender&quot; /&gt;&#xD;&#xA;    &lt;/root&gt;&#xD;&#xA;  &lt;/log4net&gt;&#xD;&#xA;" reformat="False" shortenQualifiedReferences="False">
    <Context>
      <FileNameContext mask="*.config" />
    </Context>
    <Categories />
    <Variables>
      <Variable name="LogFileName" expression="getOutputName()" initialRange="0" />
    </Variables>
    <CustomProperties />
  </Template>
</TemplatesExport>

1

ทำให้เมธอดเสมือน

เพิ่มคำหลักเสมือน มีประโยชน์อย่างยิ่งเมื่อใช้ NHibernate, EF หรือเฟรมเวิร์กที่คล้ายกันซึ่งเมธอดและ / หรือคุณสมบัติต้องเป็นเสมือนเพื่อเปิดใช้งานการโหลดหรือการพร็อกซีแบบขี้เกียจ

ทางลัด: v

มีอยู่ในไฟล์ C # 2.0+ ที่อนุญาตให้มีการประกาศสมาชิกประเภท

virtual $END$

เคล็ดลับในที่นี้คือช่องว่างหลังเวอร์ชวลซึ่งอาจมองเห็นได้ยากด้านบน เทมเพลตจริงคือ "$ END $ เสมือน" ที่เปิดใช้งานรหัสฟอร์แมต สิ่งนี้ช่วยให้คุณไปที่จุดแทรกด้านล่าง (แสดงโดย |) และพิมพ์ v:

public |string Name { get; set; }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.