2016-03-31 25 views
-1

kapsamı içindetürünün PropertyInfo kapsamının neden olmadığını anlamak ve düzeltmek istiyorum.Foreach değişken kapsamı

Kodu:

foreach (var prop in props) // For each of type's properties 
    if (prop.GetCustomAttributes(typeof(Mappable)).Any()) 
     mapSwitch = 1; 
if (isLevelMatch(isContinueToGetData, mapSwitch, props)) 
{ 
    if (model.GetType().GetProperty(prop.Name).GetValue(obj) != null) 
     comModel.FieldValueLet(prop.Name, model.GetType().GetProperty(prop.Name).GetValue(obj)); 
    else 
     comModel.FieldValueLet(prop.Name, DBNull.Value); 
    } 

Görsel stüdyo derleyici ikinci IF açıklamada bu prop yok bana anlatıyor? Herkes bunun nedenini açıklayabilir mi?

+2

'{' ve '}' foreach öğesine ekleyin. O zaman kendiniz * kapsamını * görmelisiniz. – Sinatr

+0

ne aptal bir hata! ha teşekkürler! – Haris

+0

@Sinatr lütfen cevap olarak gönderin – Haris

cevap

3

Sen foreach blok için parantez gerekir:

foreach (var prop in props) // For each of type's properties 
{ 
    if (prop.GetCustomAttributes(typeof(Mappable)).Any()) 
     mapSwitch = 1; 

    if (isLevelMatch(isContinueToGetData, mapSwitch, props)) 
    { 
     if (model.GetType().GetProperty(prop.Name).GetValue(obj) != null) 
     comModel.FieldValueLet(prop.Name, model.GetType().GetProperty(prop.Name).GetValue(obj)); 
     else 
     comModel.FieldValueLet(prop.Name, DBNull.Value); 
    } 
} 
+0

teşekkürler, aptalca bir hataydı :) – Haris

0

Sen props her prop için çalıştırılacak kod bloğu göstermek için herhangi küme parantezi yok. Bu nedenle, sadece hemen bir sonraki ifade. Eğer mevcut kod değerlendirilmektedir nasıl küme parantezi eklerseniz

, bu şekilde görünecektir:

foreach (var prop in props) // For each of type's properties 
{ 
    if (prop.GetCustomAttributes(typeof(Mappable)).Any()) 
    { 
     mapSwitch = 1; 
    } 
} 

if (isLevelMatch(isContinueToGetData, mapSwitch, props)) 
{ 
    if (model.GetType().GetProperty(prop.Name).GetValue(obj) != null) 
    { 
     comModel.FieldValueLet(prop.Name, model.GetType().GetProperty(prop.Name).GetValue(obj)); 
    } 
    else 
    { 
     comModel.FieldValueLet(prop.Name, DBNull.Value); 
    } 
} 

size comModel.FieldValueLet çağrısına olsun zamana kadar prop çok için kapsam dışında olmuştur uzun zaman.

+0

cevabınız için teşekkürler :) – Haris

+2

Parantezleriniz doğru yerlerde değil –