Werte aus Benutzerdefinierten Attribute in C#

Heute morgen habe ich mich auf das, was ich dachte wäre eine schnelle übung für die Verwendung des benutzerdefinierten Feld Attribute. Nachdem versucht, viele Dinge und Suche viele Beispiele (die meisten mit Klasse eher als Feld-Attribute), bin ich offiziell stecken.

Mein code ist unten. Eine Besonderheit ist, dass die Klasse Baujahr FileHelpers mit der classbuilder. Meine verschiedenen, teilweise erfolgreichen versuche haben zu verwalten, um die Feldnamen aus dieser Klasse, obwohl, so glaube ich, dass Teil funktioniert einwandfrei.

Was ich tun soll (laut Kommentar im code) ist a) Führen Sie durch die Felder, b) für jeden, zu sehen, ob die DBDataTypeAttribute Attribut vorhanden ist, und c) Der scheinbar schwierigste Teil -, um die Werte aus dem Attribut (FieldType Zeichenkette, und AllowNulls bool).

Alle Kommentare zu schätzen!

Mark

class Program
{
    static void Main(string[] args)
    {
        //Desired output:
        System.Type userType = null;
        userType = ClassBuilder.ClassFromString(@"
                                                public class ExpenseReport
                                                {
                                                    [FieldQuoted('""', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
                                                    [DBDataTypeAttribute(FieldType = ""varchar(1000)"", AllowNulls = true)]
                                                    public String UniqueID;
                                                    [FieldQuoted('""', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
                                                    public String ERNum;
                                                }");

        object[] attributes;
        attributes = userType.GetCustomAttributes(typeof(DBDataTypeAttribute), true);
        foreach (Object attribute in attributes)
        {
            //Would like to be able to ID for each field whether the DBDataTypeAttribute is present, and get the FieldType and AllowNulls Values

            DBDataTypeAttribute a = (DBDataTypeAttribute)attribute;
            Console.WriteLine("Attribute: ", a.FieldType);
            Console.ReadLine();

        }
    }
}

[AttributeUsage(AttributeTargets.Field)]
public class DBDataTypeAttribute : System.Attribute
{
    private string fieldtype;
    public string FieldType
    {
        get { return fieldtype; }
    }

    private string allownulls;
    public string AllowNulls
    {
        get { return allownulls; }
    }

}
InformationsquelleAutor Glinkot | 2011-06-12
Schreibe einen Kommentar