我正在为一个丢失了其VB.Net WinForms应用程序源代码的客户端工作.他们拥有的组件根本没有混淆.我试图恢复尽可能多的源代码作为C#源,并尝试了几种反编译程序集的工具,包括Reflector,ILSpy和JustDecompile(所有最新版本),但它们都产生了大量错误的代码他们.由于生成的代码中存在大量错误,我将询问具体的错误(在不同的问题中),希望得到更直接的答案,并以此方式尝试解释为什么所有工具都难以反编译这个集会.
这个问题涉及这样一个事实,即所有这些工具生成的代码总是有大量无效的成员变量(字段),如下所示:
private short $STATIC$Report_Print$20211C1280B1$nHeight;
private ArrayList $STATIC$Report_Print$20211C1280B1$oColumnLefts;
private StaticLocalInitFlag $STATIC$Report_Print$20211C1280B1$oColumnLefts$Init;
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么生成的代码有这些无效的成员变量以及我如何解决这些变量?
我在VB.Net应用程序上做支持,虽然我主要是C#开发人员.我遇到了我认为是"奇怪的"代码,因为我的C#思维模式告诉我代码是错误的,不应该编译,但确实如此.我在特定表单上查找所有引用以查看它的使用位置,并找到对表单的引用的引用,其中直接引用类的非碎片方法而不对类进行实例化.换句话说,我看到这样的代码:
FrmCareer.ShowDialog(careerId)
FrmCareer = Nothing
Run Code Online (Sandbox Code Playgroud)
现在的ShowDialog是不共享的成员,它引用实例成员变量,所以我不希望智能感知列出的ShowDialog方法在所有.但它确实并且它编译.谁能解释一下这里发生了什么?
在这个Stackoverflow的答案中,表明过滤可以在ListView不覆盖类的getFilter方法的情况下完成ArrayAdapter,而是toString在POJO类中实现.
我试过实现它,但过滤不正常.虽然ListView会进行过滤,但它不会在数组中显示正确的项目.因此,例如,如果过滤器匹配单个行,array则会显示一个项目ListView,但显示的是错误的项目.在这种情况下,始终显示数组的第一项,而不是实际匹配输入的搜索文本的项.
这是我的代码ArrayAdapter:
public class TitleListingArrayAdapter extends ArrayAdapter<Title> {
private List<Title> items;
private Context context;
public TitleListingArrayAdapter(Context context, int textViewResourceId, List<Title> items) {
super(context, textViewResourceId, items);
this.items = items;
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.titlelisting_single_row, …Run Code Online (Sandbox Code Playgroud) 我有一个源自的活动SherlockListActivity,我想展示SherlockDialogFragment这个活动.show对话框实例的方法需要一个SupportFragmentManager,但似乎SherlockListActivity只有方法getFragmentManager而不是getSupportFragmentManager.
有谁知道为什么getSupportFragmentManager缺少该方法以及如何解决这个问题?
我正在寻找一个允许使用C#读取Excel文档的库,但我需要能够读取单元格格式以及电子表格中的数据。我发现这个有用的问题列出了许多用于读取Excel文档的替代方法,但是此处提供的许多解决方案仅允许读取电子表格的内容,而不允许读取单元格属性(例如,字体,背景色等)。但是,对于我的特定问题,我需要阅读一个包含很多单元格格式的文档,并且我需要能够读取此格式信息。
我需要阅读的Excel文档是xls文档,因此在此阶段不需要阅读xlsx。我正在寻找无需安装Excel就可以在服务器上使用的库,因此它必须是独立的解决方案,最好是开源的。
有没有人有从xls文档中读取单元格格式信息的经验,并且可以建议一个有助于完成此任务的库?
更新:
我正在使用ClosedXml,因为从我读到的内容来看,它似乎提供了我需要的功能。我正在使用以下示例代码:
http://closedxml.codeplex.com/wikipage?title=查找%20和%20extracting%20the%20data&referringTitle =文档
并能够毫无问题地读取Excel文档的内容。我仅使用此代码中的Categories示例,但已将两个categoryname单元格格式化为具有背景色。现在,我要使用ClosedXml进行的操作是确定:
如果在特定单元格上定义了填充背景色
如果已定义,则获取Fill的颜色(十六进制值即可)
这是我尝试使用的一些代码:
// Get all categories
while (!categoryRow.Cell(coCategoryId).IsEmpty())
{
IXLCell categoryName = categoryRow.Cell(coCategoryName);
try
{
categories.Add(categoryName.GetString() + " " + categoryName.Style.Fill.BackgroundColor.Color.ToHex());
}
catch
{
categories.Add(categoryName.GetString() + " None");
}
categoryRow = categoryRow.RowBelow();
}
Run Code Online (Sandbox Code Playgroud)
但是代码
categoryName.Style.Fill.BackgroundColor.Color.ToHex()
Run Code Online (Sandbox Code Playgroud)
总是抛出期望“词典中不存在给定的键”。,即使对于确实定义了背景色的单元格也是如此。任何人都有任何想法如何与ClosedXml一起使用吗?
在我支持的.Net WinForms应用程序中,有以下正则表达式:
public static String MacroTemplate = @"(~#([^:]+):([^:]+):([^:]*)(?::(.*))?#~)";
Run Code Online (Sandbox Code Playgroud)
我理解其中的大部分,所以我得到它匹配一个以〜#开头并以#〜结尾然后用冒号分隔的组件的字符串.我不明白的是表达式的最后一部分,特别是这部分:
(?::(.*))?
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释这部分表达式匹配的内容吗?最后一个问号是否表示此部分是可选的?这是什么意思?