GodSharp.Opc.Da.OpcNetApi库读取variant类型源码
时间: 2023-11-29 07:07:18 浏览: 162
C#版 OPC dll动态链接库全套合集.zip
5星 · 资源好评率100%
以下是GodSharp.Opc.Da.OpcNetApi库中读取variant类型的源码示例:
```csharp
public object ReadValue(Variant value)
{
if (value == null || value.VT == VarEnum.VT_EMPTY)
{
return null;
}
if (value.VT == VarEnum.VT_NULL)
{
return null;
}
switch (value.VT)
{
case VarEnum.VT_I1:
return value.ValueI1;
case VarEnum.VT_I2:
return value.ValueI2;
case VarEnum.VT_I4:
return value.ValueI4;
case VarEnum.VT_I8:
return value.ValueI8;
case VarEnum.VT_UI1:
return value.ValueUI1;
case VarEnum.VT_UI2:
return value.ValueUI2;
case VarEnum.VT_UI4:
return value.ValueUI4;
case VarEnum.VT_UI8:
return value.ValueUI8;
case VarEnum.VT_R4:
return value.ValueR4;
case VarEnum.VT_R8:
return value.ValueR8;
case VarEnum.VT_BOOL:
return value.ValueBOOL;
case VarEnum.VT_BSTR:
return value.ValueBSTR;
case VarEnum.VT_DATE:
return value.ValueDATE;
case VarEnum.VT_CY:
return value.ValueCY;
case VarEnum.VT_DECIMAL:
return value.ValueDECIMAL;
case VarEnum.VT_VARIANT:
return value.ValueVARIANT;
case VarEnum.VT_ARRAY | VarEnum.VT_I1:
return (sbyte[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_UI1:
return (byte[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_I2:
return (short[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_UI2:
return (ushort[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_I4:
return (int[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_UI4:
return (uint[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_I8:
return (long[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_UI8:
return (ulong[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_R4:
return (float[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_R8:
return (double[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_BOOL:
return (bool[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_BSTR:
return (string[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_DATE:
return (DateTime[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_CY:
return (decimal[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_DECIMAL:
return (decimal[])value.Value;
case VarEnum.VT_ARRAY | VarEnum.VT_VARIANT:
return (Variant[])value.Value;
default:
return value.Value;
}
}
```
该方法接受一个Variant类型的参数,并根据其类型返回相应的值。如果Variant为空,则返回null。如果Variant是一个数组,则返回相应的数组。如果Variant是一个未知类型,则返回Variant的值。
阅读全文