2013-07-18 39 views
4

我有一个静态成员:C#中静态成员的别名?

namespace MyLibrary 
{ 
    public static class MyClass 
    { 
     public static string MyMember; 
    } 
} 

我要像这样访问:

using MyLibrary; 

namespace MyApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      MyMember = "Some value."; 
     } 
    } 
} 

如何使MyMember访问(不MyClass.)至MyApp刚刚加入using MyLibrary做?

回答

6

C#不允许您创建成员的别名,只有类型的别名。所以,做这样的事情,在C#中的唯一方法是创建一个新的属性,它是从范围访问:

class Program 
{ 
    static string MyMember 
    { 
     get { return MyClass.MyMember; } 
     set { MyClass.MyMember = value; } 
    } 

    static void Main(string[] args) 
    { 
     MyMember = "Some value."; 
    } 
} 

这不是一个真正的别名,但它实现了你要找的语法。

当然,如果你只访问/上MyClass修改的成员,而不是分配给它,这可以简化一下:

class Program 
{ 
    static List<string> MyList = MyClass.MyList; 

    static void Main(string[] args) 
    { 
     MyList.Add("Some value."); 
    } 
} 
+0

+1一个有效的解决方案。这种方法唯一的问题是,我必须为每个类创建成员才能访问静态成员。 – dpp

+1

@dpp正确,这就是为什么这将是一个痛苦。传统的MyClass.MyMember =“Some value”可能会更好。“' –

+0

@dpp此外,可变静态字段不仅非常糟糕的代码味道,它们可能是并发的噩梦。我建议尽可能避免使用它们。 –