Opção estrita Em caso de falta de ligação tardia
' *** O2AreaCts
If StrComp(SF6StdData.Current("O2AreaCts").ToString, "") = 0 Then
AreaCts(3) = 0
Else
AreaCts(3) = Convert.ToDouble(SF6StdData.Current("O2AreaCts").ToString)
End If
e não, não quero mudar a opção nas propriedades do projecto para [opção estrita: Off]
o erro que estou a obter é o seguinte: opção estrita sobre a não validade da ligação tardia
And Dim SF6StdData As BindingSource = New BindingSource ()
preciso reescrever o código para que ele não tenha erros.
3 answers
Não é permitida a ligação tardia quando {[[0]} Está ligado. Se necessitar de efectuar a ligação tardia, as únicas opções são usar a reflexão ou desligar Option Strict
. A única graça salvadora, no entanto, é que você não tem que desligar para todo o projeto. Você pode deixá-lo ligado para o projeto e, em seguida, basta adicionar a linha Option Strict Off
no topo de qualquer arquivo de código, onde você precisa para realizar a ligação tardia. Não é uma boa solução, mas é melhor do que afectar todo o projecto.
Também, uma vez que o {[[0]} colocado no topo de um ficheiro se aplica apenas a esse ficheiro, ele nem sequer tem de se aplicar a uma classe inteira. Se você dividir sua classe em vários arquivos Partial Class
, então você poderia ter Option Strict
definido de forma diferente para cada um desses arquivos. Por exemplo, se você colocar a maioria de sua classe em um arquivo com Options Strict On
, e então apenas colocar um método em um Partial Class
em um arquivo separado com Option Strict Off
, então apenas esse método seria compilado vagamente. O resto da classe seria compilado usando as regras estritas.
Tens de fazer com que o BindingSource actue como uma fonte de dados fortemente dactilografada. Ver as observações na documentação: http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.aspx
Se declarou AreaCts
sem um tipo, ex:
Dim AreaCts as Array
Tenta
Dim AreaCts() as Double
Isto corrigiu o meu erro de ligação.