2010-07-30 13 views
7

C# 'da, parametre geçişini kullanmadan bir örnek değişkenine farklı sınıflardaki statik bir yöntemle erişmek mümkün mü?Bir örnek değişkenine statik yöntemle erişmek mümkün mü?

Projemizde, çok fazla statik yöntemi olan bir Data access layer sınıfına sahibim. Bu yöntemlerde SqlCommand zaman aşımı değeri kodlanmış. Bizim çerçevemizde başka bir sınıfta (Dac), bu statik yöntemleri çağıran birçok örnek yöntemleri vardır.

Parametre geçişi ile çok fazla kod yazmak istemiyorum. Parametre geçişinden daha kolay başka bir çözümünüz var mı?

+0

hangi örneği bir üyeye erişmek için? –

+0

hangi örnek? –

cevap

11

Evet, bir değişken kullanmadan statik bir yöntemden, bir parametre kullanmadan, ancak yalnızca statik olarak bildirilen bir şeyle erişebildiğiniz zaman erişmek mümkündür. Örnek:

public class AnotherClass 
{ 
    public int InstanceVariable = 42; 
} 

public class Program 
{ 
    static AnotherClass x = new AnotherClass(); // This is static. 

    static void Main(string[] args) 
    { 
     Console.WriteLine(x.InstanceVariable); 
    } 
} 
+4

+1, ama oh [küresel değişkenlerin dehşeti] (http://c2.com/cgi/wiki?GlobalVariablesAreBad)! –

+0

evet ... çocukluk kabuslarının anılarını getiriyor! –

5

Elbette, örneğe, yönteme parametre olarak geçirebilirsiniz.

Ancak, herhangi bir örnek değişkenine ulaşmak mümkün olmaz.

+0

Teşekkürler Jake, ama sorumu değiştirdim. – mkus

6

Statik bir yöntemin çalışması için bir örneği yoktur, yani hayır. Parametre geçişi olmadan mümkün değildir.

Sizin örneğinizden, sorununun çözüleceğinden emin olmasa da, sınıfın statik bir örneğini kullanmak için başka bir seçenek de olabilir (Mark'ın örneği işte bu yöntemi gösterir).

Şahsen, parametre geçişinin en iyi seçenek olacağını düşünüyorum. Hala neden ondan utanmak istediğine emin değilim.

+0

justin, sorumu ilginiz için düzenledim. – mkus

+1

Düzenleme, iyi bir teknik neden olmayan "istemiyorum" anlamına gelir. İmkansız değilse, alternatif gerçekten çok kötüdür. – siride

1

Hayır yapamazsınız.

Örnek değişkenine erişmek istiyorsanız, tanımla yönteminiz statik olmamalıdır.

+0

Tekillerin örnek özelliklerine erişmek nedir? –

+1

@Richard: Bir singleton ile bir örneğiniz vardır ve yöntemler bu durumda statik olmayacaktır. Tekil örneği almak için yalnızca yöntem statiktir. –

2

Evet, kapsamdaki bir nesnenin örneğine sahip olduğu sürece bunu yapabilir. örneğin Singletons veya yöntemin kendi içinde oluşturulan nesneler .. örneğin

alın ortak senaryo:

Statik yöntem bunu bilmek bekliyorsunuz nasıl bu kadar herhangi bir örneği ile ilişkili değildir
public static string UserName 
{ 
    return System.Web.HttpContext.Current.User.Identity.Name; 
} 
İlgili konular