Advertisement
Dennisaa

PowerShellCSharpCollections

Dec 6th, 2015
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <#
  2.     Define a class in C# within PowerShell
  3.     Instantiate it in PowerShell
  4.     Invoke it in PowerShell
  5. #>
  6.  
  7. $FileDefinitions = @'
  8. using System;
  9. using System.Collections.Generic;
  10.  
  11. namespace FileDefinitions9 {
  12.    public class FieldFormat {
  13.        public FieldFormat(string fieldName, int fieldOffset, int fieldLength) {
  14.            FieldName = fieldName;
  15.            FieldOffset = fieldOffset;
  16.            FieldLength = fieldLength;
  17.        }
  18.  
  19.        public void ShowFieldContent() {
  20.            Console.WriteLine(String.Format("Fields definition parts: [{0}];[{1}];[{2}]",
  21.                FieldName, FieldOffset, FieldLength));
  22.        }
  23.  
  24.        public string FieldName {get;set;}
  25.        public int FieldOffset {get;set;}
  26.        public int FieldLength {get;set;}
  27.    }
  28.  
  29.    public class RecordFormat {
  30.        private List<FieldFormat> _fields = new List<FieldFormat>();
  31.  
  32.        public void Add(FieldFormat fieldFormat) {
  33.            _fields.Add(fieldFormat);
  34.        }
  35.  
  36.        public List<FieldFormat> GetAllFields() {
  37.            return _fields;
  38.        }
  39.    }
  40. }
  41. '@
  42.  
  43. Add-Type -TypeDefinition $FileDefinitions
  44.  
  45. $fieldMetadata1 = New-Object FileDefinitions9.FieldFormat("Salary",1,10)
  46. $fieldMetadata2 = New-Object FileDefinitions9.FieldFormat("HireDate",11,14)
  47. $fieldMetadata3 = New-Object FileDefinitions9.FieldFormat("ShoeSize", 25,33)
  48.  
  49. $fieldMetadata1.ShowFieldContent()
  50. $fieldMetadata2.ShowFieldContent()
  51. $fieldMetadata3.ShowFieldContent()
  52.  
  53. # Note that a class with no parameters does not get ()...
  54. $recordMetadata = New-Object FileDefinitions9.RecordFormat
  55. $recordMetadata.Add($fieldMetadata1)
  56. $recordMetadata.Add($fieldMetadata2)
  57. $recordMetadata.Add($fieldMetadata3)
  58.  
  59. #But note that method taking no params absolutely must get the () (without,
  60. # it returns the wrong thing, let's say for now)
  61. $fields = $recordMetadata.GetAllFields()
  62. $fields.Count
  63. $fields
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement