public class Foo
{
public string Bar {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
如何通过反射获得字符串属性Bar的值?如果PropertyInfo类型是System.String,则以下代码将引发异常
Foo f = new Foo();
f.Bar = "Jon Skeet is god.";
foreach(var property in f.GetType().GetProperties())
{
object o = property.GetValue(f,null); //throws exception TargetParameterCountException for String type
}
Run Code Online (Sandbox Code Playgroud)
看来我的问题是该属性是一个索引器类型,带有System.String.
另外,如何判断该属性是否为索引器?
我有2个Web服务,共有大约6个Web方法,大多数代码都是以任何方式放在程序集中,而web服务asmx实际上只是调用这些程序集方法并返回它们的返回类型.
将Web服务从ASMX转换为WCF要付出多少努力?
我几乎在这个阶段控制唯一 - 连接到Web服务的非基于Web的客户端,所以这不是一个真正的问题,产品是在预发布.
我正在使用iTextSharp从PDF中读取文本内容.我也能读到这一点.但我正在丢失文字格式,如字体,颜色等.有没有办法获得格式.
以下是我用于确切文本的代码段 -
PdfReader reader = new PdfReader("F:\\EBooks\\AspectsOfAjax.pdf");
textBox1.Text = ExtractTextFromPDFBytes(reader.GetPageContent(1));
private string ExtractTextFromPDFBytes(byte[] input)
{
if (input == null || input.Length == 0) return "";
try
{
string resultString = "";
// Flag showing if we are we currently inside a text object
bool inTextObject = false;
// Flag showing if the next character is literal e.g. '\\' to get a '\' character or '\(' to get '('
bool nextLiteral = false;
// () Bracket nesting level. Text appears …Run Code Online (Sandbox Code Playgroud) 令人惊讶的是,String.Clone()不会像返回的那样返回字符串的副本String.Copy().相反,它返回'this'原始字符串.
我想了解为什么.Net Framework团队选择这样做.
根据MSDN:
ICloneable接口[...]要求您的Clone方法实现返回当前对象实例的副本.
String.Clone() 显然不遵循本指南.
我知道字符串是不可变的,但如果不变性是这里的原因,String.Copy()也会返回,this但事实并非如此.
当然,这是一个相当理论化的问题.
几个月前,我开始在这家编程公司工作.他们使用的一种做法是在SQL而不是C#中尽可能多地完成工作.
所以,让我说我有一个写一些文件列表的简单例子:
是这样的:
string SQL = @"
SELECT f.FileID,
f.FileName,
f.FileExtension,
'/files/' + CAST(u.UserGuid AS VARCHAR(MAX)) + '/' + (f.FileName + f.FileExtension) AS FileSrc,
FileSize=
CASE
WHEN f.FileSizeB < 1048576 THEN CAST(CAST((f.FileSizeB / 1024) AS DECIMAL(6, 2)) AS VARCHAR(8)) + ' KB'
ELSE CAST(CAST((f.FileSizeB / 1048576) AS DECIMAL(6, 2)) AS VARCHAR(8)) + ' MB'
END
FROM Files f
INNER JOIN Users u
ON f.UserID = u.UserID
";
// some loop for writing results {
// write...
// }
Run Code Online (Sandbox Code Playgroud)
比这样的事情更快或更好:
string …Run Code Online (Sandbox Code Playgroud) 我在看一个成员函数
int funct(int x) const;
Run Code Online (Sandbox Code Playgroud)
而且我想知道是否
static int funct(int x);
Run Code Online (Sandbox Code Playgroud)
会更好.
如果成员函数不使用任何成员变量,那么它应该是静态的.有什么东西可以阻止这个吗?
$("#bc [id$=_dropdownID]").change(function() {
if (this.value == '2' || this.value == '3') {
$("#bc .pnl").show();
}
else {
$("#bc .pnl").hide();
}
Run Code Online (Sandbox Code Playgroud)
我在jQuery中有以下代码.有没有什么办法可以用ac#enum替换上面代码中的硬编码常量2和3?jQuery是否支持枚举,如果是,如何实现?任何建议欢迎....
我最近开始在我的一些项目中使用PostSharp,并注意到一个不幸的副作用 - 它使用的所有项目中的代码覆盖率显着下降.
我猜测这种情况发生的原因是分析仪看到了PostSharp代码并且很多代码没有经过测试(例如用于通用异常处理和日志记录的样板代码).我显然可以为使用这些方面的每种方法编写单元测试,但如果我说实话,那感觉就像浪费时间.
有没有人有这种经历的经验?
我有一个整数数组,我正在循环它们:
for (int i = 0; i < data.Length; i++)
{
// do a lot of stuff here using data[i]
}
Run Code Online (Sandbox Code Playgroud)
如果我做:
for (int i = 0; i < data.Length; i++)
{
int value = data[i];
// do a lot of stuff with value instead of data[i]
}
Run Code Online (Sandbox Code Playgroud)
是否有任何表现收益/损失?
根据我的理解,直接访问C/C++数组元素,即整数的n元素数组具有长度为n*sizeof(int)的连续内存块,而程序访问元素i通过执行类似*data [i]的操作=*data [0] +(i*sizeof(int)).(请原谅我滥用符号,但你理解我的意思.)
所以这意味着C/C++在引用数组变量时应该没有性能增益/损失.
C#怎么样?C#有一堆额外的开销,如data.Length,data.IsSynchronized,data.GetLowerBound(),data.GetEnumerator().
显然,C#数组与C/C++数组不同.
那么判决是什么?我应该存储int value = data [i]并使用值,还是没有性能影响?
有没有办法在Visual Studio 2012中获得行结束字形?
以下屏幕截图(来自记事本++)显示了我想要的内容(CR LF部分):

c# ×7
.net ×4
string ×2
arrays ×1
asmx ×1
c++ ×1
editor ×1
enums ×1
icloneable ×1
itextsharp ×1
javascript ×1
jquery ×1
optimization ×1
performance ×1
postsharp ×1
properties ×1
reflection ×1
sql ×1
sql-server ×1
wcf ×1