如果您不需要此问题的背景,请跳到下面的问题。
正如您在第一个代码块中看到的那样,我使用常量作为传递给样式字典的参数。
因为我知道(到现在为止),.net
中大量使用了这些类型,我想知道,如何指定字典将接受作为专用类型传递的参数,而不是{{1输入。
这对我来说也是另一个关于类型的小课。
string
直到现在,我传递它(样式字典)字符串,用作参数,所以我可以让它完成工作,同时保持简单...因为我仍然对{{1}感到新鲜那时候......当我创建这个课程时,我甚至无法想到学习 //string //string
html.StyleDict.Add(Stl.Prop.BgColor, Stl.Vals.Clr.Aquamarine);
是什么,或者如何使用它们。
所以......对于这种情况,实施和使用应该是一个非常简单的任务(对于你们中的一些人......实际上大多数人,如果不是全部(:)都要召集通过使用自定义类型而不是字符串来实现。
...所以最终它将为该C#样式任务传递字符串,但字典将允许您将参数作为.net
的类型传递,因为html css样式是通过后面的代码是通过字符串值。虽然我在填充样式字典时会使用我的自定义Style类。
types
例如。
这是我用来替换元素的背景的类 通过使用生成html标记的循环,所以我在循环计数器中传递循环中当前元素的其他样式属性
(有点偏离主题,但我必须提供一个用法示例来说明这个问题的含义)
......也就是风格词典的使用地点。
style
//styleType //styleType
html.StyleDict.Add(Stl.Prop.BgColor, Stl.Vals.Clr.Aquamarine);
我可以使用另一种方式传递自己的类型(条件是使用相同的字典) 我唯一想到的就是使用设置为参数的默认值
public sealed class html
{
// current Typless Dictionary
public static Dictionary<string, string> StyleDict = new Dictionary<string, string>();
// future dictionary (: , naturally it wouldnt work with the parameters as it is now (see relevant Styles Class
public static Dictionary<Styles.Prop, Styles.Vals> StyleDict = new Dictionary<Stl.Prop, Stl.Vals>();
public static string DynamicStyle_Generator
(
int LoopCounter = -1,
Dictionary<string, string> StyleAttributeDict = null
)
{
string BaseStyle = "", Terminator = "'", BgCol = "";
StringBuilder StylerSB = new StringBuilder();
BgCol = "";
bool bgcolAlternator;
if (LoopCounter >= 0)
{
LoopCounter++ ;
bgcolAlternator = (RowCounter % 2) == 0;
if (bgcolAlternator)
BgCol = "#70878F";
else BgCol = "#E6E6B8";
}
BaseStyle = string.Format("style='background-color:{0};", BgCol);
return string.Concat(BaseStyle, StyleDict, Terminator);
}
而不仅仅是转换为字符串! (不工作)
Lsts.StlsDict.Add(Stl.Prop.BgColor, Stl.Vals.Clr.Aquamarine);
public Dictionary<Stl.Prop, Stl.Vals> StlsDict = new Dictionary<Stl.Prop, Stl.Vals>();
public static class Styles
{
public sealed class Props
{
public static string pBgUrl1(string fileName)
{
return "url('images/" + fileName + "')";
}
/// <summary>
/// Specifies the HTML backgroundimage style.
/// </summary>
public static readonly string BgColor = "Background-Color ",
/// <summary>
/// Specifies the HTML backgroundimage style.
/// </summary>
BackgroundImage = "Background-image ",
/// <summary>
/// Specifies the HTML bordercollapse style.
/// </summary>
BorderCollapse = "BorderCollapse ",
/// <summary>
/// Specifies the HTML bordercolor style.
///</summary>
BorderColor = "BorderColor ",
/// <summary>
/// Specifies the HTML borderstyle style.
/// </summary>
BorderStyle = "BorderStyle ",
}
public sealed class Vals
{
public class fontNames
{
public const string Aharoni = "Aharoni",
Andalus = "Andalus",
AngsanaNew = "Angsana New",
AngsanaUPC = "AngsanaUPC",
Aparajita = "Aparajita";
}
public class Color
{
public const string AliceBlue = "AliceBlue";
public const string AntiqueWhite = "AntiqueWhite";
public const string Aqua = "Aqua";
public const string Aquamarine = "Aquamarine";
public const string Azure = "Azure";
}
}
}
这里没有必要,除非你想要字体而不是颜色,你必须通过这样调用来获得无法识别的颜色
while writing this , i could have thought of this actually
Dictionary<T,T> StyleDict = new Dictionary<T, T>();
否则
public static string DynamicStyle_Generator
(
int LoopCounter = -1,
Dictionary<Styles.Props, Styles.Vals.Color> StyleColor = null
Dictionary<Styles.Props, Styles.Vals.fontNames> StylefontNames = null
)
{
然后无论相同的方式(无论是否为空),这都可以完成它的工作
DynamicStyle_Generator(counterhere , null, DictionaryOfFonts);
答案 0 :(得分:1)
这在我看来就像一个过度工程的案例。有一个原因是System.Web.UI.WebControls.WebControl
公开了它的Style
属性,它在内部使用键和值的字符串。您想要提供键的常量列表,没关系,值的常量列表不会。
答案 1 :(得分:0)
C#中的枚举用于表示一组固定的不同值
http://www.codeproject.com/Articles/20805/Enhancing-C-Enums
根据您的评论,我认为这是您正在寻找的: http://weblogs.asp.net/ralfw/archive/2006/01/07/434774.aspx
来自以上链接:
public enum Colors
{
red, blue, green
}
Set<Colors> sc = new Set<Colors>();
sc.Add(Colors.red);
sc.Add(Colors.green);
Set<Colors> sc2 = new Set<Colors>();
sc2.Add(Colors.blue);
sc.Add(sc2); // union
Console.WriteLine(sc); // prints: [red,blue,green]