小编gsi*_*nni的帖子

System.Reflection GetProperties方法不返回值

有人可以向我解释为什么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个属性并且这样做会增加我的代码行数至少三倍.我会成为维护的噩梦.

.net c# reflection

24
推荐指数
1
解决办法
1万
查看次数

PrivateObject类的GetField()方法可以访问C#4.0中的私有const字符串吗?

我正在编写一个单元测试来访问隔离数据存储中的文件.文件名存储在类中的私有const字符串中,因为我不在整个应用程序中的任何其他位置使用它.

但是,当我运行单元测试时,当我调用PrivateObject类实例的GetField("fieldName")方法时,我得到一个"未找到字段"错误.

string historyFileName = (string)history.GetField("ISOLATED_HISTORY_FILE");
Run Code Online (Sandbox Code Playgroud)

c# unit-testing visual-studio-2010

4
推荐指数
1
解决办法
1414
查看次数

绑定到详细信息视图控件中的复选框时,将DBNull转换为布尔值

这有点傻但我有一个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.人们会认为有一种简单的方法可以解决这个问题,但我找不到它是不吉利的.

c# asp.net dbnull detailsview sqldatasource

3
推荐指数
1
解决办法
1万
查看次数

使用带参数的Oracle函数将记录集从Oracle返回到.Net

我目前在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)

c# oracle asp.net-3.5 oracle11g .net-3.5

2
推荐指数
1
解决办法
3641
查看次数

VS 2010继续声明"不需要此使用指令"

常规类中的以下using语句一直在尖叫着"不需要using指令".

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;
Run Code Online (Sandbox Code Playgroud)

然而,如果我尝试使用DateTime数据类型,intellisense将不会选择它,并且编译器在我尝试构建时会抱怨.

.net c# visual-studio-2010

0
推荐指数
1
解决办法
1995
查看次数

尝试在docx文件中插入数字签名行

我正在尝试在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# ms-word docx openxml

0
推荐指数
1
解决办法
4466
查看次数