@@ -9,7 +9,7 @@ Small C# code generator. Easily generate code programmatically!
99
1010- .NET CLI ` dotnet add package SharpCode `
1111- Package Manager ` Install-Package SharpCode `
12- - Package Reference ` <PackageReference Include="SharpCode" Version="0.1 .0" /> `
12+ - Package Reference ` <PackageReference Include="SharpCode" Version="0.2 .0" /> `
1313
1414## Usage
1515
@@ -130,6 +130,179 @@ namespace Data
130130The [ samples] ( https://github.com/ful-stackz/SharpCode/tree/main/samples ) folder contains sample projects which make use of ` SharpCode ` . The projects are fully functional
131131and can be played around with. Check the ` samples/README.md ` for more information.
132132
133+ ## Features
134+
135+ With ` SharpCode ` you can programmatically generate source code for a lot of C# structures. When generating the source
136+ code of any structure ` SharpCode ` performs basic validation to ensure a level of correctness of the produced source
137+ code.
138+
139+ <details >
140+ <summary >Generating namespace source code</summary >
141+
142+ ``` csharp
143+ // ✔ Define the name of the namespace
144+ namespace Data
145+ {
146+ // ✔ Interface members with different access modifiers
147+ public interface IHasData {}
148+
149+ // ✔ Class members with different access modifiers
150+ public class Data {}
151+
152+ // ✔ Struct members with different access modifiers
153+ public struct DataPoint {}
154+
155+ // ✔ Enum members with different access modifiers
156+ public enum DataType {}
157+ }
158+ ```
159+ </details >
160+
161+ <details >
162+ <summary >Generating interface source code</summary >
163+
164+ ``` csharp
165+ // ✔ Define XML summary docs
166+ // ✔ Define the name of the interface
167+ // ✔ Define a list of implemented interfaces
168+ // / <summary>
169+ // / Docs!
170+ // / </summary>
171+ public interface IHasData : IImplementedInterface
172+ {
173+ // ✔ Define property members
174+ int Count { get ; set ; }
175+ }
176+ ```
177+ </details >
178+
179+ <details >
180+ <summary >Generating class source code</summary >
181+
182+ ``` csharp
183+ // ✔ Define XML summary docs
184+ // ✔ Define the name of the class
185+ // ✔ Define an inherited class
186+ // ✔ Define a list of implemented interfaces
187+ // / <summary>
188+ // / Docs!
189+ // / </summary>
190+ public class Data : DataBase , IHasData
191+ {
192+ // ✔ Define field members
193+ private int _count ;
194+
195+ // ✔ Define constructors
196+ // ✔ Define constructor XML summary docs
197+ // ✔ Define constructor parameters
198+ // ✔ Define accepting fields for constructor parameters
199+ // ✔ Define base calls with parameters
200+ // / <summary>
201+ // / Docs!
202+ // / </summary>
203+ public Data (int count ) : DataBase(count)
204+ {
205+ _count = count ;
206+ }
207+
208+ // ✔ Define property members
209+ // ✔ Define property XML summary docs
210+ // ✔ Define custom getter/setter for properties
211+ // / <summary>
212+ // / Docs!
213+ // / </summary>
214+ public int Count
215+ {
216+ get => _count ;
217+ set => _count = value ;
218+ }
219+
220+ // ✔ Define auto-implemented properties
221+ public string Name { get ; set ; }
222+ }
223+ ```
224+ </details >
225+
226+ <details >
227+ <summary >Generating struct source code</summary >
228+
229+ ``` csharp
230+ // ✔ Define XML summary docs
231+ // ✔ Define the name of the struct
232+ // ✔ Define a list of implemented interfaces
233+ // / <summary>
234+ // / Docs!
235+ // / </summary>
236+ public struct DataPoint : IHasData
237+ {
238+ // ✔ Define field members
239+ private int _count ;
240+
241+ // ✔ Define constructors
242+ // ✔ Define constructor XML summary docs
243+ // ✔ Define constructor parameters
244+ // ✔ Define accepting fields for constructor parameters
245+ // / <summary>
246+ // / Docs!
247+ // / </summary>
248+ public Data (int count )
249+ {
250+ _count = count ;
251+ }
252+
253+ // ✔ Define property members
254+ // ✔ Define property XML summary docs
255+ // ✔ Define custom getter/setter for properties
256+ // / <summary>
257+ // / Docs!
258+ // / </summary>
259+ public int Count
260+ {
261+ get => _count ;
262+ set => _count = value ;
263+ }
264+ }
265+ ```
266+ </details >
267+
268+ <details >
269+ <summary >Generating enum source code</summary >
270+
271+ ``` csharp
272+ // ✔ Define XML summary docs
273+ // ✔ Define the name of the enum
274+ // / <summary>
275+ // / Docs!
276+ // / </summary>
277+ public enum DataType
278+ {
279+ // ✔ Define enum members
280+ // ✔ Define XML summary docs for enum members
281+ // ✔ Define explicit values for enum members
282+ // / <summary>
283+ // / Docs!
284+ // / </summary>
285+ Invalid = 0 ,
286+ Incomplete ,
287+ Complete ,
288+ }
289+ ```
290+
291+ ``` csharp
292+ // ✔ Define enum as flags
293+ // ✔ Auto generated flags-compatible values for enum members
294+ [System .Flags ]
295+ public enum ExampleFlags
296+ {
297+ None = 0 ,
298+ A = 1 ,
299+ B = 2 ,
300+ C = 4 ,
301+ D = 8 ,
302+ }
303+ ```
304+ </details >
305+
133306## Development
134307
135308You don't need anything special for local development.
0 commit comments