2011-05-04 45 views
1

這是我在C#問題:物業無法訪問,即使聲明爲public

我有以下類別:

public class Entity { 
    public int Number { get; set; } 
// Other methods, constructor etc, not relevant to this question. 
} 

public class Manager { 
    private Foo() { 
     Entity entity = new Entity(); 
     entity.Number = 1; 
    } 
} 

上線entity.Number = 1,我得到以下編譯時錯誤:

'Entity' does not contain a definition for 'Number' and no extension method 'Number accepting a first argument of type 'Entity' could be found (are you missing a directive or an assembly reference?) 

如何解決此錯誤?看來我應該一定能夠訪問Number屬性。我試過做非自動屬性的方式。 (即我寫了一個私人支持者變量並寫出了get並設置了我自己)。

編輯

一些有用的招貼畫都告訴我,我還沒有提供足夠的信息。
我的歉意,這是我第一次在StackOverflow或類似的網站發佈問題。請參閱下面的相關代碼的更完整的圖片。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Audio; 
using Microsoft.Xna.Framework.Content; 
using Microsoft.Xna.Framework.GamerServices; 
using Microsoft.Xna.Framework.Graphics; 
using Microsoft.Xna.Framework.Input; 
using Microsoft.Xna.Framework.Media; 
using SharedContent; 

namespace Glow 
{ 
    public class GlowGame : Microsoft.Xna.Framework.Game 
    { 
     // Viewport and graphics variables 
     GraphicsDeviceManager graphics; 

     public GlowGame() 
     { 
      graphics = new GraphicsDeviceManager(this); 
      Content.RootDirectory = "Content"; 
      Entity entity = new Entity(Content); 

      // Error occurs in line below! 
      entity.Number = 1; 
     } 

     // Standard game template methods here: Initialize, LoadContent, Update, 
     // Draw, etc. 

    } 
} 

in a separate file named Entity. 


using System; 
using System.Collections.Generic; 
using System.Linq; 
using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Audio; 
using Microsoft.Xna.Framework.Content; 
using Microsoft.Xna.Framework.GamerServices; 
using Microsoft.Xna.Framework.Graphics; 
using Microsoft.Xna.Framework.Input; 
using Microsoft.Xna.Framework.Media; 

namespace SharedContent 
{ 
    public class Entity 
    { 
     public int Number { get; set; } 
     public Entity(ContentManager content) { } 
    } 
} 

確切的錯誤信息:

'SharedContent.Entity' does not contain a definition for 'Number' and no extension method 'Number' accepting a first argument of type 'SharedContent.Entity' could be found (are you missing a using directive or an assembly reference?) 

另外要注意的,我已經檢查和複查是Entity其實點正確的代碼,而不是其他一些Entity

再次感謝您的幫助!

+4

你確定它不是經理引用的不同實體嗎? – forsvarir 2011-05-04 18:37:26

+0

確保它們在同一個命名空間 – Equiso 2011-05-04 18:38:48

+1

好點@forsvarir,這些都在同一個文件中嗎?經理引用了哪些其他名稱空間?實體是一個相當普遍的名稱,所以你可能會碰撞。如果你看一下Intellisense for Entity,它應該告訴你它是從哪個命名空間獲得的。 – 2011-05-04 18:39:35

回答

2

儘管我沒有測試過,但我強烈懷疑如果將代碼複製並粘貼到Visual Studio中,它不會產生您引用的錯誤。 (即使是你編輯的版本。)

請發佈一個示例,實際上會產生錯誤。將你的項目修剪到骨頭上,然後張貼與問題相關的位。很有可能,你會發現自己在這個過程中的錯誤:)

+0

你基本上是對的。問題是我有另一個錯誤(我錯誤地認爲這是不相關的)。一旦我解決了這個錯誤,我的第一個問題就解決了。 – 2011-05-04 20:07:23

3

看看你的例子吧應該工作 - 你可以驗證Entity指向你定義的類,而不是一些內置的類? (在Visual Studio中右鍵單擊Entity,轉到定義)。