我有下面的示例代碼:結構參數
public struct TestData
{
public readonly string Element;
public readonly bool MandatoryInd;
public TestData(string element, bool mandatoryInd)
{
Element = element;
MandatoryInd = mandatoryInd;
}
}
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class Test : Attribute
{
public TestData[] Values { get; set; }
public Test(params TestData[] values)
{
this.Values = values;
}
}
我想要做的是這樣的:
[Test("3477", true, "3286", true, "3286", false)]
public class TestClass
{
}
基本上,我想一對參數(字符串,布爾)被捕獲在TestData()
結構中,但我不確定是否有可能這樣做。我已經嘗試了以下內容,但出現了編譯錯誤:「屬性參數必須是常量表達式,typeof表達式或屬性參數類型的數組創建表達式」。
[Test(new TestData("3477", true), new TestData("3286", true), new TestData("3286", false))]
public class TestClass
{
}
如果這是不可能的,那麼我將不得不考慮使用多個屬性,我此刻的成功做什麼,但我希望有一個更清潔,更更簡潔的方法。
@svick我得到的「‘EDI.Attributes.TestData’是‘類型’,但使用類似「可變」錯誤時,我試圖這一點。 – Intrepid
我的意思是通過將'Test'的構造函數更改爲'public Test(string element,bool mandatoryInd)'來實際使用該屬性多次,這與Marc提出的非常相似,只是語法略有不同。 – svick
@svick我目前正在這樣做,但我想看看是否有任何使用單一屬性來做到這一點。顯然,塞爾曼22已經提出了一種做法,雖然它不是理想的,但它是一個很好的替代方案,可能對我有用。 – Intrepid