private ObjectDataFieldControl CreateControl(long typeId, int member, ObjectInfo objInfo) { ObjectDataFieldControl c = null; Safir.Dob.Typesystem.MemberType memberType; long complexType; int typeSize; bool isArray; int arrLength; string memberName = Safir.Dob.Typesystem.Members.GetInfo(typeId, member, out memberType, out complexType, out typeSize, out isArray, out arrLength); switch (memberType) { case Safir.Dob.Typesystem.MemberType.EnumerationMemberType: { c = new EnumField(objInfo, member, complexType, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.BooleanMemberType: { c = new BoolField(objInfo, member, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.Int32MemberType: { c = new Int32Field(objInfo, member, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.Int64MemberType: { c = new Int64Field(objInfo, member, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.ChannelIdMemberType: { c = new ChannelIdField(objInfo, member, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.HandlerIdMemberType: { c = new HandlerIdField(objInfo, member, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.EntityIdMemberType: { c = new EntityIdField(objInfo, member, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.InstanceIdMemberType: { c = new InstanceIdField(objInfo, member, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.StringMemberType: { c = new StringField(objInfo, member, memberName, arrLength, typeSize); break; } case Safir.Dob.Typesystem.MemberType.TypeIdMemberType: { c = new TypeIdField(objInfo, member, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.ObjectMemberType: { c = new ObjectField(objInfo, member, complexType, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.BinaryMemberType: { c = new BinaryField(objInfo, member, memberName, arrLength); break; } case Safir.Dob.Typesystem.MemberType.Float32MemberType: case Safir.Dob.Typesystem.MemberType.Ampere32MemberType: case Safir.Dob.Typesystem.MemberType.CubicMeter32MemberType: case Safir.Dob.Typesystem.MemberType.Hertz32MemberType: case Safir.Dob.Typesystem.MemberType.Joule32MemberType: case Safir.Dob.Typesystem.MemberType.Kelvin32MemberType: case Safir.Dob.Typesystem.MemberType.Kilogram32MemberType: case Safir.Dob.Typesystem.MemberType.Meter32MemberType: case Safir.Dob.Typesystem.MemberType.MeterPerSecond32MemberType: case Safir.Dob.Typesystem.MemberType.MeterPerSecondSquared32MemberType: case Safir.Dob.Typesystem.MemberType.Newton32MemberType: case Safir.Dob.Typesystem.MemberType.Pascal32MemberType: case Safir.Dob.Typesystem.MemberType.Radian32MemberType: case Safir.Dob.Typesystem.MemberType.RadianPerSecond32MemberType: case Safir.Dob.Typesystem.MemberType.RadianPerSecondSquared32MemberType: case Safir.Dob.Typesystem.MemberType.Second32MemberType: case Safir.Dob.Typesystem.MemberType.SquareMeter32MemberType: case Safir.Dob.Typesystem.MemberType.Steradian32MemberType: case Safir.Dob.Typesystem.MemberType.Volt32MemberType: case Safir.Dob.Typesystem.MemberType.Watt32MemberType: { c = new Float32Field(objInfo, member, memberName, arrLength, Safir.Dob.Typesystem.Members.GetTypeName(typeId, member)); break; } case Safir.Dob.Typesystem.MemberType.Float64MemberType: case Safir.Dob.Typesystem.MemberType.Ampere64MemberType: case Safir.Dob.Typesystem.MemberType.CubicMeter64MemberType: case Safir.Dob.Typesystem.MemberType.Hertz64MemberType: case Safir.Dob.Typesystem.MemberType.Joule64MemberType: case Safir.Dob.Typesystem.MemberType.Kelvin64MemberType: case Safir.Dob.Typesystem.MemberType.Kilogram64MemberType: case Safir.Dob.Typesystem.MemberType.Meter64MemberType: case Safir.Dob.Typesystem.MemberType.MeterPerSecond64MemberType: case Safir.Dob.Typesystem.MemberType.MeterPerSecondSquared64MemberType: case Safir.Dob.Typesystem.MemberType.Newton64MemberType: case Safir.Dob.Typesystem.MemberType.Pascal64MemberType: case Safir.Dob.Typesystem.MemberType.Radian64MemberType: case Safir.Dob.Typesystem.MemberType.RadianPerSecond64MemberType: case Safir.Dob.Typesystem.MemberType.RadianPerSecondSquared64MemberType: case Safir.Dob.Typesystem.MemberType.Second64MemberType: case Safir.Dob.Typesystem.MemberType.SquareMeter64MemberType: case Safir.Dob.Typesystem.MemberType.Steradian64MemberType: case Safir.Dob.Typesystem.MemberType.Volt64MemberType: case Safir.Dob.Typesystem.MemberType.Watt64MemberType: { c = new Float64Field(objInfo, member, memberName, arrLength, Safir.Dob.Typesystem.Members.GetTypeName(typeId, member)); break; } } if (c != null) { c.ParentObjectEditPanel = this; } return(c); }
/// <summary> /// Create a new DNS resolver client. /// </summary> /// <param name="ManualDNSServers">A list of manually configured DNS servers to query.</param> /// <param name="SearchForIPv4DNSServers">If yes, the DNS client will query a list of DNS servers from the IPv4 network configuration.</param> /// <param name="SearchForIPv6DNSServers">If yes, the DNS client will query a list of DNS servers from the IPv6 network configuration.</param> public DNSClient(IEnumerable <IPSocket> ManualDNSServers, Boolean SearchForIPv4DNSServers = true, Boolean SearchForIPv6DNSServers = true) { this._DNSCache = new DNSCache(); this.RecursionDesired = true; this.QueryTimeout = TimeSpan.FromSeconds(23.5); _DNSServers = new List <IPSocket>(ManualDNSServers); #region Search for IPv4/IPv6 DNS Servers... if (SearchForIPv4DNSServers) { _DNSServers.AddRange(NetworkInterface. GetAllNetworkInterfaces(). Where(NI => NI.OperationalStatus == OperationalStatus.Up). SelectMany(NI => NI.GetIPProperties().DnsAddresses). Where(IPAddress => IPAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork). Select(IPAddress => new IPSocket(new IPv4Address(IPAddress), new IPPort(53)))); } if (SearchForIPv6DNSServers) { _DNSServers.AddRange(NetworkInterface. GetAllNetworkInterfaces(). Where(NI => NI.OperationalStatus == OperationalStatus.Up). SelectMany(NI => NI.GetIPProperties().DnsAddresses). Where(IPAddress => IPAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6). Select(IPAddress => new IPSocket(new IPv6Address(IPAddress), new IPPort(53)))); } #endregion #region Reflect ResourceRecordTypes this._RRLookup = new Dictionary <UInt16, ConstructorInfo>(); FieldInfo TypeIdField; ConstructorInfo Constructor; foreach (var _ActualType in typeof(ADNSResourceRecord). Assembly.GetTypes(). Where(type => type.IsClass && !type.IsAbstract && type.IsSubclassOf(typeof(ADNSResourceRecord)))) { TypeIdField = _ActualType.GetField("TypeId"); if (TypeIdField == null) { throw new ArgumentException("Constant field 'TypeId' of type '" + _ActualType.Name + "' was not found!"); } Constructor = _ActualType.GetConstructor(new Type[2] { typeof(String), typeof(Stream) }); if (Constructor == null) { throw new ArgumentException("Constructor<String, Stream> of type '" + _ActualType.Name + "' was not found!"); } _RRLookup.Add((UInt16)TypeIdField.GetValue(_ActualType), Constructor); } #endregion }