Author Topic: CLR GUID  (Read 3812 times)

stanl

  • Pundit
  • *****
  • Posts: 939
CLR GUID
« on: June 29, 2013, 08:17:55 am »
Just trying to get some more practice. The code below doesn't fail, but obviously not the correct way to go about creating a GUID from .NET
I wasn't able to implement a System.GUID class so I went the CLRType route. Most of the code I looked at seemed to imply NewGuid().Guid.ToString() was the way to go, but I don't see how to go about calling the method.

 
Code: Winbatch
;***************************************************************************
;** Reverse GUID
;**
;** Reference:
;**       REQUIRES WinBatch 2013A or newer & CLR version 4.0
;**
;** Stan LittleField, June 29,2013
;***************************************************************************
If Version( )< '2013A'
   Pause('Notice', 'Need 2013A or Newer Version of WinBatch')
   Exit
EndIf

ObjectClrOption( 'use', 'System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' )
oGUID = ObjectClrType('System.GUID','Guid')  ;having trouble with 2nd parameter
;cGUID = oGUID.NewGuid().Guid

Message("",ObjectTypeGet(oGUID))

;code to reverse the GUID


oGUID=0

Exit
 

td

  • Tech Support
  • *****
  • Posts: 3020
    • WinBatch
Re: CLR GUID
« Reply #1 on: June 29, 2013, 10:34:00 am »
Code: Winbatch
objectClrOption( 'use', 'System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' )

; Construct a guid using any random guid as a constructor parameter.
strGuid = "{D28AC658-2D3C-4111-B297-1E7D132F2FE4}"
oGUID = ObjectClrNew('System.Guid',strGuid )

; Returns a VT_RECORD and WinBatch does not have built in functionality
; to handle this variant type directly.
rGUID = oGUID.NewGuid()  ; Returns a vt_record

; However, ObjectClrType can turn it into a regular COM/CLR object
; with a little help from the FCL.
strctGuid = ObjectClrType("System.Guid", rGUID)

Message("String Representation of New Guid", strctGuid.ToString())
"No one who sees a peregrine falcon fly can ever forget the beauty and thrill of that flight."
  - Dr. Tom Cade

stanl

  • Pundit
  • *****
  • Posts: 939
Re: CLR GUID
« Reply #2 on: June 29, 2013, 11:19:00 am »
Thanks Tony!!!
Initially when I read the MSDN http://msdn.microsoft.com/en-us/library/system.guid.aspx I felt the System.Guid wasn't a class, but as they said a type. Your example is really something to learn from.
Allow me a tangent. Winbatch found a way to represent positional parameters in COM by using ::  ... is it conceivable that a function like
oGuid = ObjectClrType("System.Guid::NewGuid()") could evolve?

td

  • Tech Support
  • *****
  • Posts: 3020
    • WinBatch
Re: CLR GUID
« Reply #3 on: July 01, 2013, 06:44:28 am »
Allow me a tangent. Winbatch found a way to represent positional parameters in COM by using ::  ... is it conceivable that a function like
oGuid = ObjectClrType("System.Guid::NewGuid()") could evolve?

WinBatch supports named parameters in COM Automation method object calls using the the :: syntax.  ObjectClrType is a equivalent to ObjectType for CLR based objects and method parameters when ObjectType's variant conversions wont do.  These two functions, in part, serve the same purpose as cast operators in other languages.  I do not see the connect between a casting from one type to another and named parameters.
"No one who sees a peregrine falcon fly can ever forget the beauty and thrill of that flight."
  - Dr. Tom Cade