我实际上不知道在C#中调用了什么.但是我想在我的类中添加functionallity以同时添加多个项目.
myObj.AddItem(mItem).AddItem(mItem2).AddItem(mItem3);
Run Code Online (Sandbox Code Playgroud) 我有一个属性,我想从资源文件加载文本到属性.
[IntegerValidation(1, 70, ErrorMessage = Data.Messages.Speed)]
private int i_Speed;
Run Code Online (Sandbox Code Playgroud)
但我不断得到"属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式"
如果我添加一个字符串而不是Data.Messages.Text,它可以很好地工作,如:
[IntegerValidation(1, 70, ErrorMessage = "Invalid max speed")]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在使用Reflection类来获取某个对象中的所有字段.然而,我的问题是,当字段在普通类中时,它可以正常工作,例如:
class test
{
string test1 = string.Empty;
string test2 = string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
在这里我得到test1和test2,我的问题是我使用抽象,因此结合了几个类.
我有类似的东西:
class test3 : test2
{
string test4 = string.Empty;
string test5 = string.Empty;
}
class test2 : test1
{
string test2 = string.Empty;
string test3 = string.Empty;
}
class test1
{
string test0 = string.Empty;
string test1 = string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,我不会从中获取字段GetType().GetFields(BindingFlag.Default).
这些领域的每个人都有get; set;附属于它的财产.当我运行代码时,我将属性一直返回到test1但不是实际的字段.
这是我试图获取字段的代码:
FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Default);
foreach (FieldInfo field in fields)
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Public
| BindingFlags.Instance
| …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以添加多个通用约束?
我有一个Add方法,它接受一个Object(电子邮件,电话或地址),所以我想的是:
public void Add<T>(T Obj)
where T : Address
where T : Email
where T : Phone
{
if (Obj is Address)
m_Address.Add(Obj as Address);
else if (Obj is Email)
m_Email.Add(Obj as Email);
else
m_Phone.Add(Obj as Phone);
}
Run Code Online (Sandbox Code Playgroud)
但我一直在:
"A constraint clause has already been specified for type parameter 'T'. All of the constraints for a type parameter must be specified in a single where clause."
1)声明变量的政策是什么?你应该总是使用关键字private,还是可以跳过它?
string MyVar1;
Run Code Online (Sandbox Code Playgroud)
与
private string MyVar1;
Run Code Online (Sandbox Code Playgroud)
我看到的唯一原因是Microsoft有一天可以更改默认访问修饰符public而不是private.
在哪里说私人是可选的?对MSDN的任何引用?
2)常量的命名策略?
在写一个常量时我总是使用大写字母,但是一位朋友告诉我这违反了微软的命名政策,是吗?
const string MYVAR1;
Run Code Online (Sandbox Code Playgroud)
VS
const string myVar1;
Run Code Online (Sandbox Code Playgroud)
3)Pascal还是Camel?
我个人认为骆驼看起来很丑陋.
我在班上测试XML序列化,但我注意到在运行程序时ID号没有保存.
所以我环顾四周并修改了一些东西,但没有任何效果,然后我看到除了ID之外的所有字段都有get和set属性.所以我添加了一套; 财产到我的身份证号码和工作的poof.问题是,是否必须设定; 得到; 在我的所有属性上运行XML序列化是否有效?
我不希望在创建对象(自动生成)后修改ID号.
我试图找出为什么我得到堆栈溢出异常.我正在为学校作业创建一个简单的纸牌游戏,当我克隆卡片以返回它们时,我得到了堆栈溢出异常.
所以我得到了这个卡类:
public class Card : ICloneable
{
....
#region ICloneable Members
public object Clone()
{
return this.Clone(); // <--- here is the error thrown when the first card is to be cloned
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
我有一个叫做Hand克隆的课程:
internal class Hand
{
internal List<Card> GetCards()
{
return m_Cards.CloneList<Card>(); // m_Cards is a List with card objects
}
}
Run Code Online (Sandbox Code Playgroud)
最后,我得到了一个扩展方法List:
public static List<T> CloneList<T>(this List<T> listToClone) where T : ICloneable
{
return listToClone.Select(item => (T)item.Clone()).ToList();
}
Run Code Online (Sandbox Code Playgroud)
错误被卡类(IClonable方法)抛出,
CardLibrary.dll中发生了未处理的"System.StackOverflowException"类型异常
c# ×7
attributes ×1
bindingflags ×1
constants ×1
constraints ×1
generics ×1
icloneable ×1
private ×1
properties ×1
reflection ×1
resources ×1
variables ×1