C# data atributy – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# data atributy – .NET – Fórum – Programujte.comC# data atributy – .NET – Fórum – Programujte.com

 

pan Lorenc
~ Anonymní uživatel
3 příspěvky
26. 8. 2016   #1
-
0
-

Zdravím,

potřeboval bych si udělat svou třídu pro data atributy s předvolenými hodnotamy. Mám něco takovéhodle:

using System;

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]

public class TestAttribute
{
    public TestAttribute(Test data) {
	this.Data = data.toString();
    }
    

    public string Data { get; }
}

public enum Test
{
    Character,
    Currency,
    Date,
    DateTime,
    Logical,
    Numeric,
    Variant,
    Double,
    Float,
    Memo
}

Ale když mám pak třídu a chci ty data atributy použít, tak mi vyhazuje chybu, kterou nevím jak mám odstranit. pokoušel jsem se inspirovat i ve třídě DataTypeAttribute, ale moc jsem nepochodil.

public class TestClass
{
    [Test(Test.Character)]
    public string klic;
}

Pokud si udělám Attribute třídu že přijímá jen string, tak to funguje, ale rád bych měl předděfinované hodnoty, které bych tomu předával.

Nahlásit jako SPAM
IP: 90.183.20.–
26. 8. 2016   #2
-
0
-
Nahlásit jako SPAM
IP: 195.178.67.–
velurex0
Stálý člen
26. 8. 2016   #3
-
0
-

#1 pan Lorenc
Ahoj, hrubým pohledem vidím že:

1. TestAttribute nedědíš od Attribute

2. property Data nemá set

3. toString (malé "t")

Nahlásit jako SPAM
IP: 85.71.115.–
velurex0
Stálý člen
26. 8. 2016   #4
-
0
-

a celkově, nepokoušíš se duplikovat věc, která už je hotová?

https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.datatypeattribute(v=vs.110).aspx

Nahlásit jako SPAM
IP: 85.71.115.–
pan Lorenc
~ Anonymní uživatel
3 příspěvky
26. 8. 2016   #5
-
0
-

#4 velurex
O tomto vím, ale potřeboval bych tam vlastní typy. Jinak je to to samé jako třída DataTypeAttribute.

já to mám k tomu, že když ukládám do DB, tak nad to chci definovat atribut, který mi řekne jaký typ kládám a ukládání se tomu přizpůsobí (musím pracovat s FoxPro db a tam je to tako ... no comment)

Nahlásit jako SPAM
IP: 90.183.20.–
velurex0
Stálý člen
26. 8. 2016   #6
-
0
-

#5 pan Lorenc
Foxka? Dnes? No dobře. :) Co ty tři úpravy výše? Přijde mi že s nimi by to fungovat mohlo.

Nahlásit jako SPAM
IP: 85.71.115.–
pan Lorenc
~ Anonymní uživatel
3 příspěvky
29. 8. 2016   #7
-
0
-

#6 velurex
Už to běží. Byla to souhra několika faktorů a zde je výsledný kód:

using System;

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class FoxProAttribute : Attribute
{
    public FoxProAttribute(FoxPro data)
    {
        this.Data = data.ToString();
    }

    public FoxProAttribute(string data)
    {
        this.Data = data;
    }

    public string Data { get; set; }
}


public enum FoxPro
{
    Character,
    Currency,
    Date,
    DateTime,
    Logical,
    Numeric,
    Variant,
    Double,
    Float,
    Memo
}

Pak to jde zapsat způsoby kterýma jsem chtěl a to:

[FoxPro("Currency")]
public string price2;

[FoxPro("Character")]
public string units;

Jinak k foxce jsem přišel jak slepej k houslím a jsem rád, že alespoň nějakým způsobem jde v C# s tím pracovat.

Nahlásit jako SPAM
IP: 90.183.20.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý