2008-10-02 37 views
28

Có cách nào để tôi có thể thay đổi cách một đoạn mã của đoạn mã hiển thị khi được sử dụng trong mã mà đoạn mã tạo ra không?Định dạng tham số chữ của đoạn mã C#

Cụ thể: Tôi muốn biết nếu tôi có thể có một chữ gọi là nói, $ PropertyName $ và sau đó nhận được động cơ đoạn để render "_ $ PropertyName $ mà ký tự đầu tiên được làm bằng chữ thường.

tôi có thể 't đủ khả năng R #. Xin vui lòng giúp :)

+0

Xem gợi ý của tôi để [Thêm kịch bản để đoạn mã (T4 + Roslyn)] (https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/5805587-add -script-to-code-đoạn-t4-roslyn). Rất tiếc, tôi không nhận được phản hồi nào cho đề xuất này. –

Trả lời

20

Đáng tiếc là có vẻ là không có cách nào. Snippets cung cấp hỗ trợ kinh ngạc hạn chế cho transformation functions như bạn có thể nhìn thấy.

bạn cần phải gắn bó với giải pháp tiêu chuẩn VS, đó là để viết hai chữ cái: một cho tên thuộc tính, và cái kia cho tên biến thành viên

+0

Cảm ơn! Tôi không thể tìm thấy bất cứ điều gì, và các thuộc tính chức năng dường như không thể mở rộng (Và chỉ có 3 chức năng để lựa chọn!?!) Nếu chỉ tôi có thể kích hoạt tính năng đổi tên tự động sau khi đoạn trích được thực hiện .. –

+0

Hi Michael và Caerbanog, tôi đã có chính xác cùng một ý tưởng :-) Bạn đã tìm thấy một cách cho đến năm 2008? Cảm ơn rất nhiều –

+1

Dường như điều này vẫn đúng đối với Visual Studio 2010 ... – hfrmobile

4

một "sửa chữa" có thể sử dụng một tiền tố trong việc đặt tên hoặc biến thành viên, tức là .:

string m_$name$; 
string $name$ 
{ 
get{return m_$name$;} 
set{m_$name$=value;} 
}; 
+2

Vâng, nhưng nó không cho phép bạn thay đổi vỏ của $ name $ để làm cho nó camelCase. (Thông thường mọi người sử dụng '" _property "' như sự ủng hộ cho một thuộc tính có tên '" Thuộc tính "', v.v. Ngoài ra "m_" là siêu không được chấp nhận ... vì như vb6 ...? Xin đừng bao giờ sử dụng nó). – BrainSlugs83

1

Bạn có thể nhập một chữ cái đầu tiên phía trên, sau đó một tên thuộc tính, sau đó một chữ cái đầu tiên thấp hơn. Hãy thử đoạn này:

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <Header> 
    <Title>Notifiable Property</Title> 
    <Author>Nikolay Makhonin</Author> 
    <Shortcut>propn</Shortcut> 
    <Description>Property With in Built Property Changed method implementation.</Description> 
    <SnippetTypes> 
     <SnippetType>SurroundsWith</SnippetType> 
     <SnippetType>Expansion</SnippetType> 
    </SnippetTypes> 
    </Header> 
    <Snippet> 
    <Declarations> 
     <Literal> 
      <ID>Type</ID> 
      <Default>Type</Default> 
     </Literal> 
     <Literal> 
      <ID>P</ID> 
      <Default>P</Default> 
     </Literal> 
     <Literal> 
      <ID>roperty</ID> 
      <Default>ropertyName</Default> 
     </Literal> 
     <Literal> 
      <ID>p</ID> 
      <Default>p</Default> 
     </Literal> 
     <Literal> 
      <ID>Ownerclass</ID> 
      <ToolTip>The owning class of this Property.</ToolTip> 
      <Function>ClassName()</Function> 
      <Default>Ownerclass</Default> 
     </Literal> 
    </Declarations> 
    <Code Language="CSharp"> 
     <![CDATA[#region $P$$roperty$ 

     private Field<$Type$> _$p$$roperty$; 
     public static readonly string $P$$roperty$PropertyName = GetPropertyName(() => (($Ownerclass$)null).$P$$roperty$); 
     public $Type$ $P$$roperty$ 
     { 
      get { return _$p$$roperty$; } 
      set { Set(ref _$p$$roperty$, value); } 
     } 

     #endregion 

]]> 
    </Code> 
    </Snippet> 
</CodeSnippet> 
Các vấn đề liên quan