viewpoint-particle

Author Topic: CLR GUID  (Read 3329 times)

stanl

  • Pundit
  • *****
  • Posts: 796
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: 2618
    • 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())
"Success is a lousy teacher. It seduces smart people into thinking they can't lose."
  - Bill Gates


stanl

  • Pundit
  • *****
  • Posts: 796
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: 2618
    • 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.
"Success is a lousy teacher. It seduces smart people into thinking they can't lose."
  - Bill Gates