Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <#
- Define a class in C# within PowerShell
- Instantiate it in PowerShell
- Invoke it in PowerShell
- #>
- $FileDefinitions = @'
- using System;
- using System.Collections.Generic;
- namespace FileDefinitions9 {
- public class FieldFormat {
- public FieldFormat(string fieldName, int fieldOffset, int fieldLength) {
- FieldName = fieldName;
- FieldOffset = fieldOffset;
- FieldLength = fieldLength;
- }
- public void ShowFieldContent() {
- Console.WriteLine(String.Format("Fields definition parts: [{0}];[{1}];[{2}]",
- FieldName, FieldOffset, FieldLength));
- }
- public string FieldName {get;set;}
- public int FieldOffset {get;set;}
- public int FieldLength {get;set;}
- }
- public class RecordFormat {
- private List<FieldFormat> _fields = new List<FieldFormat>();
- public void Add(FieldFormat fieldFormat) {
- _fields.Add(fieldFormat);
- }
- public List<FieldFormat> GetAllFields() {
- return _fields;
- }
- }
- }
- '@
- Add-Type -TypeDefinition $FileDefinitions
- $fieldMetadata1 = New-Object FileDefinitions9.FieldFormat("Salary",1,10)
- $fieldMetadata2 = New-Object FileDefinitions9.FieldFormat("HireDate",11,14)
- $fieldMetadata3 = New-Object FileDefinitions9.FieldFormat("ShoeSize", 25,33)
- $fieldMetadata1.ShowFieldContent()
- $fieldMetadata2.ShowFieldContent()
- $fieldMetadata3.ShowFieldContent()
- # Note that a class with no parameters does not get ()...
- $recordMetadata = New-Object FileDefinitions9.RecordFormat
- $recordMetadata.Add($fieldMetadata1)
- $recordMetadata.Add($fieldMetadata2)
- $recordMetadata.Add($fieldMetadata3)
- #But note that method taking no params absolutely must get the () (without,
- # it returns the wrong thing, let's say for now)
- $fields = $recordMetadata.GetAllFields()
- $fields.Count
- $fields
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement