有人可以向我解释为什么GetProperties如果类设置如下,该方法不会返回公共值.
public class DocumentA
{
public string AgencyNumber = string.Empty;
public bool Description;
public bool Establishment;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试设置一个简单的单元测试方法来玩
该方法如下,它具有所有适当的使用语句和引用.
我正在做的就是调用以下内容,但它返回0
PropertyInfo[] pi = target.GetProperties(BindingFlags.Public | BindingFlags.Instance);
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用私有成员和公共属性设置类,它可以正常工作.
我没有按照旧学校方式设置课程的原因是因为它有61个属性并且这样做会增加我的代码行数至少三倍.我会成为维护的噩梦.
我正在编写一个单元测试来访问隔离数据存储中的文件.文件名存储在类中的私有const字符串中,因为我不在整个应用程序中的任何其他位置使用它.
但是,当我运行单元测试时,当我调用PrivateObject类实例的GetField("fieldName")方法时,我得到一个"未找到字段"错误.
string historyFileName = (string)history.GetField("ISOLATED_HISTORY_FILE");
Run Code Online (Sandbox Code Playgroud) 这有点傻但我有一个DetailsView,它使用sqlDataSource绑定到我的数据库中的记录.我的问题是我绑定的字段是一个位字段,(i,e 1或0),目前允许空值.我意识到这需要改变,但我还需要能够在GUI端处理DBNulls,以便应用程序自动知道如果值为DBNull,则将复选框的Checked属性设置为"false".目前我的模板字段看起来像这样.
</asp:TemplateField>
<asp:TemplateField HeaderText="Car:" HeaderStyle-Width="15%" ItemStyle-Width="85%">
<ItemTemplate>
<asp:Label ID="lblIsCar" runat="server" Text='<%# Eval("isCar") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID="ckIsCar" runat="server" Checked='<%# Convert.ToBoolean(Eval("isCar"))%>' />
</EditItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
在View模式下一切正常,但是当我单击详细信息视图控件上的Edit链接时,我收到以下错误:
无法将对象从DBNull强制转换为其他类型.
有什么建议?
更新:
我需要通过Bind()而不是Eval()来使用2路绑定,因为详细信息视图会对所选记录执行更新.如果我在绑定时使用Convert.ToBoolean(),则会抛出异常.我最终可能会使用CheckboxField.人们会认为有一种简单的方法可以解决这个问题,但我找不到它是不吉利的.
我目前在oracle数据库中有以下函数,它返回由管道分隔的连接字符串.这是一个遗留应用程序,正在更新以使用.net 3.5.exiisting应用程序将返回的结果集连接成VARCHAR2数据类型.我想要做的是将整个结果集返回给我的.net客户端.我正在尝试完成的MS SQL等同于一个简单的"SELECT*FROM TBL WHERE id = @id"我不习惯Oracle使用的一些概念.我似乎混合了OOP和SQL查询.我已经阅读了多个这方面的例子,但似乎无法找到我正在寻找的确切内容.你能帮忙吗?
CREATE OR REPLACE FUNCTION DOCSADMIN.GET_DOCS (
RECID IN NUMBER) -- RECORD ID
RETURN VARCHAR2 -- CONCATENATED STRING WITH PIPES
IS
RETVAL VARCHAR2(5000) :='';
DOCSTRING VARCHAR2(5000) :='';
DOCNAME VARCHAR2(5000) :='';
DOCNUMBER NUMBER;
STATUS VARCHAR2(5000) :='';
DOCTYPE VARCHAR2(5000) :='';
EDITDATE DATE :='';
/******************************************************************************
NAME: GET_DOCS
PURPOSE: Pulls associated docs from profile table
******************************************************************************/
CURSOR GETDOCINFO IS SELECT DOCNUMBER, DOCNAME, CUSTOM_STATUS, DOCUMENTTYPES.DESCRIPTION, LAST_EDIT_TIME
FROM PROFILE, DOCUMENTTYPES, FORMS WHERE NAD_APID = IN_APID AND PROFILE.FORM = FORMS.SYSTEM_ID …Run Code Online (Sandbox Code Playgroud) 常规类中的以下using语句一直在尖叫着"不需要using指令".
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;
Run Code Online (Sandbox Code Playgroud)
然而,如果我尝试使用DateTime数据类型,intellisense将不会选择它,并且编译器在我尝试构建时会抱怨.
我正在尝试在word文档的openxml(docx)版本中插入数字签名行.我没有得到任何错误,但我意识到我可能会错过一步.这是我的代码.这是一个Windows窗体应用程序.有人能告诉我如何正确地将数字签名行附加到Run实例吗?// S //用作我们想要插入数字签名行的标记.使用foreach语句很容易找到它.
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Vml.Office;
using DocumentFormat.OpenXml.Wordprocessing;
namespace KeywordSearch
{
public partial class Form1 : Form
{
FileInfo[] tempfiles;
List<FileInfo> files = new List<FileInfo>();
public Form1()
{
InitializeComponent();
}
private void btnClose_Click(object sender, EventArgs e)
{
Close();
}
private void btnSearch_Click(object sender, EventArgs e)
{
string fileName = txtPath.Text;
using (WordprocessingDocument doc =
WordprocessingDocument.Open(fileName, false))
{
foreach (Text t in doc.MainDocumentPart.Document.Body.Descendants<Text>())
{
if (t.Text == "//S//")
{
lbxResults.Items.Add(t.Text);
Run r …Run Code Online (Sandbox Code Playgroud) c# ×6
.net ×2
.net-3.5 ×1
asp.net ×1
asp.net-3.5 ×1
dbnull ×1
detailsview ×1
docx ×1
ms-word ×1
openxml ×1
oracle ×1
oracle11g ×1
reflection ×1
unit-testing ×1