簡體   English   中英

如何使用 C# 中的屬性創建一個簡單的對象,例如使用 javascript

[英]How to create a simple Object with properties in C# like with javascript

我正在使用 Xamarin,我需要一些看起來像這樣的東西:

public Colors = new object() {
  Blue = Xamaring.Color.FromHex("FFFFFF"),
  Red = Xamarin.Color.FromHex("F0F0F0")
}

所以我以后可以做這樣的事情:

myObject.Colors.Blue // returns a Xamarin.Color object

但是,當然,這不會編譯。 顯然,我需要為此創建一個全新的類,這是我真的不想做的,也不認為我應該做的事情。 在 javascript 中,我可以這樣做:

this.colors = { blue: Xamarin.Color.FromHex("..."), red: Xamarin... }

有沒有可以幫助我快速實現這一目標的 C 語言? 謝謝

你可以創建一個動態對象( https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject%28v=vs.110%29.aspxhttps://msdn.microsoft.com/en -us / library / bb397696.aspx )。 但是C#是一種強類型語言......不是像javascript這樣的無類型語言。 因此,創建一個新類是在C#中執行此操作的方法。

使用動態對象的示例:

public class Program
{
    static void Main(string[] args)
    {
        var colors = new { Yellow = ConsoleColor.Yellow, Red = ConsoleColor.Red };
        Console.WriteLine(colors.Red);
    }
}

或者使用ExpandoObject:

public class Program
{
    static void Main(string[] args)
    { 
        dynamic colors = new ExpandoObject();
        colors.Red = ConsoleColor.Red;
        Console.WriteLine(colors.Red);
    }
}

或者更多C#OO這樣做的方式...... 創建一個類:

public class Program
{
    static void Main(string[] args)
    { 
        var colors = new List<Color>
        {
            new Color{ Color = ConsoleColor.Black, Name = "Black"},
            new Color{ Color = ConsoleColor.Red, Name = "Red"},
        }; 
        Console.WriteLine(colors[0].Color);
    }
}

public class Color
{
    public ConsoleColor Color { get; set; }
    public String Name { get; set; }
}

我建議使用上一個版本。

有時谷歌是你最好的朋友:

https://msdn.microsoft.com/en-us/library/bb397696.aspx

var Colors = new {
    Blue = Xamaring.Color.FromHex("FFFFFF"),
    Red = Xamarin.Color.FromHex("F0F0F0")
}

如果您只想從其字符串名稱中檢索顏色,為什么不使用字典。

public static Dictionary<string,Color> colours;

public static void Main(string[] args)
{

    var dictionary = new Dictionary<string,Color>();

    dictionary.Add("blue",Xamarin.Color.FromHex("FFFFFF"));     

}

我會將顏色視為屬於集合的東西,而不是那些具有重要意義的屬性。 Colour是一個概念,特定顏色只是可能在運行時更改的數據。 但是缺少這種區別,你可以做一些事情,比如從別處注入顏色選擇是不可能的。

可以添加更復雜的功能,我可能會將顏色名稱及其Xamerin數據封裝到一個Colour類中。

如果你真的需要將它稱為myObject.Colors.Blue ,那么很難。 你已經把自己描繪成了一個你需要創建一個類的角落(或者至少你應該,我確定會有很多不可取的方法建議替代方案)並且你不必要地編譯數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM