2010-11-29 44 views
0

伊夫实现该IMarcas接口的类:C#实现和转换接口

public class BaseQuestao : IMarcas 
    { 
     public string TxtMarca 
     { 
      get; 
      set; 
     } 
    } 

哪里TxtMarca属性是从该接口的assignture。

问题是,当我尝试执行跟随代码是说,BasesQuestao不是IMarcas:

BaseQuestao bs = new BaseQuestao(); 
IMarcas brand = bs as IMarcas; 
if (brand != null) 
{ 
    bs.TxtMarca = "voila"; 
} 

任何ideias?

+0

您不应该检查bs为null,您应该检查品牌。 – 2010-11-29 17:17:35

+0

显示问题的简短但完整的程序确实有帮助,因为上述情况良好。 – 2010-11-29 17:17:50

回答

0

正如其他人所说,你使用了错误的变量(的bs代替brand) - 但它会工作无论哪种方式。

下面是更正后的代码示例:

using System; 

public interface IMarcas 
{ 
    string TxtMarca { get; set; } 
} 

public class BaseQuestao : IMarcas 
{ 
    public string TxtMarca 
    { 
     get; 
     set; 
    } 
} 

class Test 
{ 
    static void Main() 
    { 
     BaseQuestao bs = new BaseQuestao(); 
     IMarcas brand = bs as IMarcas; 
     if (brand != null) 
     { 
      brand.TxtMarca = "voila"; 
      Console.WriteLine("Done"); 
     } 
    } 
} 

,甚至与原代码:

if (bs != null) 
{ 
    bs.TxtMarca = "voila"; 
    Console.WriteLine("Done"); 
} 

...它仍然很好。

0

之后你施放bs一个IMarcasbrand,那么你是否bs为空,不brand。您应该检查brand是否为空以查看投射是否成功。

除此之外,它应该工作得很好。如果仍然无效,请发布更多代码/上下文。

0

尝试

if (brand != null) 
0

检查您的代码,因为上面的代码是好的