小编Pet*_*ete的帖子

C#内部接口与内部实现

我发现了一些我不太懂的东西.

我有一个项目,我有一个内部接口.实现该接口的类也是内部的.在接口的实现中,我制作了我实现的所有成员,内部.我没有做一个明确的实现.

我有两个接口和两个类来实现这些工作正常的接口.

它看起来像这样:

internal interface IA
{
    void X();
}
Run Code Online (Sandbox Code Playgroud)

然后

internal class CA : IA
{
    internal void X()
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这适用于前面提到的两个类.但是当我尝试用另一个接口和类做它时,它不起作用.事实上,对于上面的例子,我得到错误:

'WindowsFormsApplication1.CA'没有实现接口成员'WindowsFormsApplication1.IA.X()'.'WindowsFormsApplication1.CA.X()'无法实现接口成员,因为它不是公共的.

我意识到我可以将方法公开或者做一个显式的实现(并省略内部和公共修饰符),但我只是混淆为什么它适用于它使用的两个类,但我似乎无法复制它在其他地方.

对代码进行一些屠杀(因为它是保密的),这是我项目中实际工作的代码之一.

internal interface IScanner
{
    void SetHardware(Hardware hardware);
    void Start();
    void PauseScan();
    void ResumeScan();
    void Stop();
    bool InScan { get; }
    event ScanCompleteHandler ScanComplete;
}
Run Code Online (Sandbox Code Playgroud)

然后我上课了:

internal class MyScanner : IScanner
{
    internal void SetHardware(Hardware hardware)
    {
       ...
    }

    internal void Start()
    {
        ...
    }

    internal void Stop()
    {
        ...
    }

    internal …
Run Code Online (Sandbox Code Playgroud)

c# interface internal

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

从代码中显示,隐藏或切换后,Bootstrap Collapse不会切换

我的HTML是:

<div id="accordion-container">
    <div class="accordion" id="navaccordion">
        <div class="accordion-group">
            <div class="accordion-heading">
                <a class="accordion-toggle" data-toggle="collapse" data-parent="#navaccordion" href="#collapseMenu">
                    <strong>My Menus</strong>
                </a>
            </div>
            <div id="collapseMenu" class="accordion-body collapse in">
                <div class="accordion-inner">
                    <div class="navigation" id="navigationcontainer">
                        <span id="menutree">
                            MenuTree
                        </span>
                    </div>
                </div>
            </div>
        </div>
        <div class="accordion-group">
            <div class="accordion-heading">
                <a class="accordion-toggle" data-toggle="collapse" data-parent="#navaccordion" href="#collapseQuickLinks">
                    <strong>Quick Links</strong>
                </a>
            </div>
            <div id="collapseQuickLinks" class="accordion-body collapse">
                <div class="accordion-inner">
                    <div class="quicklinks" id="quicklinkscontainer">
                        <span id="quicklinkslist">
                            QuickLinks
                        </span>
                    </div>
                </div>
            </div>
        </div>
        <div class="accordion-group">
            <div class="accordion-heading">
                <a class="accordion-toggle" data-toggle="collapse" data-parent="#navaccordion" href="#collapseQueue">
                    <strong>Queue</strong>
                </a>
            </div>
            <div …
Run Code Online (Sandbox Code Playgroud)

javascript collapse twitter-bootstrap

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

ASP.NET MVC 4中Windows身份验证和表单身份验证的混合

我们有一个ASP.NET MVC 4内部网应用程序.我们正在使用Windows身份验证,这方面工作正常.使用用户的凭据,我们可以从Web应用程序访问这些凭据.

然而,我们真正想要的是某种混合模式.我们希望从浏览器获取用户的凭据,但我们还想验证用户是否在我们的应用程序数据库中.如果用户在数据库中,那么他们可以继续.如果不是,我们希望将它们重定向到要求备用凭据的页面.我现在正在做的是,Global.asax.cs我有一个Application_AuthenticateRequest方法,我正在检查用户是否经过身份验证.如果它们和他们的cookie信息没有反映他们登录到系统的事实,那么我将他们登录并设置一些cookie,其中包含有关用户的信息.如果他们未经过身份验证,我会将其重定向到登录页面.我们不能将AD角色用于公司策略所涉及的原因,因此我们需要使用该数据库进行其他身份验证.

我猜Application_AuthenticateRequest这不是做这个的地方,但也许是.但我们基本上需要一个地方来过滤身份验证请求.但另外这个实现引出了另一个问题:

我们的应用中有一些允许匿名访问的网址.我已经<location>为web.config 添加了标签.问题是,当匿名调用进入这些调用时,它会转到Application_AuthenticateRequest并尝试将用户登录到数据库中.现在,我可以添加代码Application_AuthenticateRequest来处理这些URL,这是我目前的计划,但是如果我写的并且Application_AuthenticateRequest不是这样做的地方,那么我现在宁愿把它弄清楚.

iis asp.net-mvc windows-authentication form-authentication

9
推荐指数
1
解决办法
6347
查看次数

跨链接Oracle服务器的SQL Server和WCF事务

注意请参阅更新6.它有一个简单的应用程序,演示如何重新创建问题.

我是DTC的噩梦......我们的设置是我们有两个数据库; 一个SQL Server 2008数据库和一个Oracle数据库(11g,我相信).我已经安装了oracle MTS的东西.我将DTC配置为允许分布式事务.对Oracle表的所有访问都通过SQL Server数据库中与链接服务器中的Oracle表相对的视图进行.

(关于DTC配置:选中 - >网络DTC访问,允许远程客户端,允许入站,允许出站,相互身份验证(尝试所有3个选项),启用XA事务和启用SNA LU 6.2事务.DTC登录as NT AUTHORITY\NetworkService)

Our app is an ASP.NET MVC 4.0 app that calls into a number of WCF services to perform database work. Currently the web app and the WCF service share the same app pool (not sure if it's relevant, but just in case...)

Some of our services are transactional, others are not.

Each WCF service that is transactional has the following attribute on its interface: …

c# sql-server oracle msdtc transactions

7
推荐指数
1
解决办法
2543
查看次数

通过泛型和覆盖反射调用方法

我正在尝试在Unity容器中调用RegisterType方法.RegisterType总共有16个覆盖(其中一些是参数,有些是类型).

我正在尝试执行相当于:

Container.RegisterType<IMyDataProvider, MockData.MockProvider>("MockData", new ContainerControlledLifetimeManager())
Run Code Online (Sandbox Code Playgroud)

使用GetMethod()完全失败,所以我最终做了这个丑陋的事情:

     MethodInfo registerTypeGeneric = Container.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance).
        Where(p => p.ToString() == "Microsoft.Practices.Unity.IUnityContainer RegisterType[TFrom,TTo](System.String, Microsoft.Practices.Unity.LifetimeManager, Microsoft.Practices.Unity.InjectionMember[])").FirstOrDefault();
     MethodInfo registerTypeSpecific = registerTypeGeneric.MakeGenericMethod( new Type[] { typeof(IMyDataProvider), Assembly.LoadFrom("MockData.dll").GetType("MockData.MockProvider") });
     registerTypeSpecific.Invoke(Container, new object[] { "MockData", new ContainerControlledLifetimeManager() });
Run Code Online (Sandbox Code Playgroud)

这个工作很漂亮,一直到Invoke因为我没有InjectionMember参数而抱怨(它们是可选的,我没有任何给予).因此,根据文档,我必须使用Type.InvokeMember()来调用带有可选参数的方法.

所以我这样做了:

     Binder binder = new BootstrapperBinder();
     Container.GetType().InvokeMember("RegisterType",
        BindingFlags.Instance | BindingFlags.Public | BindingFlags.OptionalParamBinding | BindingFlags.InvokeMethod,
        binder,
        Container,
        new object[] { "MockData", new ContainerControlledLifetimeManager() });
Run Code Online (Sandbox Code Playgroud)

我的BoostrapperBinder类执行此操作:

  public override MethodBase BindToMethod(BindingFlags bindingAttr, MethodBase[] match, ref object[] args, ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] names, …
Run Code Online (Sandbox Code Playgroud)

c# generics reflection overriding

6
推荐指数
1
解决办法
2019
查看次数

无法让SyncAdapter在Xamarin中工作

我一直在尝试SyncAdapter上班.男人,多么荒谬的复杂一团糟.我甚至不知道从哪里开始,所以我想我只会转储所有相关的代码.如果我在下面的代码中随处可见断点,那么在启动时会调用以下两个东西(按此顺序):

  • StubContentProvider.OnCreate()
  • AndroidApp.InitSyncService() (当我的应用程序启动时显式调用).

就是这样.没有任何与之相关的东西SyncAdapter被调用(严重的是,我把断点放在与它相关的每个类的每个方法的顶部.)

我已经在应用程序的这个方面工作了大约一个半月,并且在不同的时间使它比现在更具功能性,但我不确定我是如何使它功能性降低的.我试过调整它的每个方面.我已经改变了ACCOUNT_TYPE,并AUTHORITY以各种值.当我阅读文档并了解更多信息时,我会在这里和那里进行调整,但它似乎并不想为我而来.

这是我们的应用程序的最后一个主要功能,所以我再也不能把它放在一边了.

AndroidApp.cs

public static class AndroidApp
{

    public static string ACCOUNT_TYPE = "georgesmobile.android.backgroundservice";
    public static string ACCOUNT = "mobile";
    public static string AUTHORITY = "georgesmobile.android.provider";

    public static Account SyncAccount { get; private set; }

    public static void InitSyncService(Context context)
    {
        if (SyncAccount == null)
        {
            CreateSyncAccount(context);
            ContentResolver.SetIsSyncable(AndroidApp.SyncAccount, AndroidApp.AUTHORITY, 1);
            ContentResolver.SetSyncAutomatically(AndroidApp.SyncAccount, AndroidApp.AUTHORITY, true);
            Bundle bund = new Bundle();
            ContentResolver.AddPeriodicSync(AndroidApp.SyncAccount, AndroidApp.AUTHORITY, bund, 2);
        }
    }
    private static Account …
Run Code Online (Sandbox Code Playgroud)

c# android android-syncadapter xamarin

6
推荐指数
0
解决办法
1338
查看次数

MSTest V2在哪里

我似乎无法找到这个.具体来说,我正在寻找的是在单元测试中使用[DataTestMethod][DataRow]属性的能力.我安装了Visual Studio Professional 2015,我似乎无法在安装中找到这些属性.我运行设置,看看是否有我遗失的东西,我看不到任何可能包含它的遗漏.

根据这个微软页面:https://blogs.msdn.microsoft.com/visualstudioalm/2016/06/17/taking-the-mstest-framework-forward-with-mstest-v2/

"...您可以立即开始使用它(使用Visual Studio 2015本身),并执行以下步骤:"

"像以前一样安装"MSTest V2"TestFramework,即查找并安装框架包,如下所示:"

目前还不清楚"和以前一样"是指什么.我无法在任何地方找到MSTest V2进行安装.

在上面引用的正上方,是第5步:

(5) Delivered as a NuGet package.

但我找不到MS Test V2的NuGet包.

这是怎么回事?看起来这应该是非常简单的,但我完全被难倒了.

.net unit-testing mstest

6
推荐指数
1
解决办法
2937
查看次数

hasOwnProperty()无法在Chrome中使用数组

我继承了一些Javascript代码,我不是一个真正的Javascript专家.

我们有一个对象,其作用类似于哈希和值的集合buckets.它具有作为哈希值的属性,并且每个属性都是一个对象.这是浏览器调试器中的样子:

在此输入图像描述

我们有一个containsKey()函数hasOwnProperty()用于检查存储桶对象中是否存在哈希.

containsKey: function(key) {
    var hash = this.comparer.getObjectHashCode(key);
    if (!this.buckets.hasOwnProperty(hash))
        return false;

    var array = this.buckets[hash];
    for (var i = 0; i < array.length; i++) {
        if (this.comparer.areEqual(array[i].key, key))
            return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这段代码至少可以运行3年.在过去一两周内,它停止在Chrome中工作.在IE中仍然可以正常工作(不确定FF).

在我看来它应该继续工作.我已经验证buckets包含正在搜索的哈希属性.但hasOwnProperty()现在回归虚假.

我应该在这里使用更合适的功能吗?

这是它在调试器中失败的地方:

在此输入图像描述

javascript hash google-chrome

6
推荐指数
1
解决办法
695
查看次数

XPathExpression没有在适当的上下文中评估?

我正在尝试从USGS解析一些XML.

这是一个例子

"parameterCd"参数列出了我想要的3项数据.我可能会或可能不会全部回来.

我在使用javax库的Android上执行此操作.

在我的代码中,我最初检索0-3 ns1:timeSeries节点.这很好用.我当时想要做的是,在单个timeSeries节点的上下文中,检索ns1:variable和ns1:values节点.

所以在我的代码下面我有:

expr = xpath.compile("//ns1:variable");
NodeList variableNodes = (NodeList) expr.evaluate(timeSeriesNode, XPathConstants.NODESET);
Run Code Online (Sandbox Code Playgroud)

我希望只返回一个节点,因为评估应该发生在我传入的单个timeSeriesNode的上下文中(根据文档).但是,它会返回文档的所有ns1:variable节点.

我错过了什么吗?

这是相关部分......

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
xpath.setNamespaceContext(new InstantaneousValuesNamespaceContext());
XPathExpression expr;
NodeList timeSeriesNodes = null;
InputStream is = new ByteArrayInputStream(sourceXml.getBytes());
try {
    expr = xpath.compile("//ns1:timeSeries");
    timeSeriesNodes = (NodeList) expr.evaluate(new InputSource(is), XPathConstants.NODESET);

    for(int timeSeriesIndex = 0;timeSeriesIndex < timeSeriesNodes.getLength(); timeSeriesIndex++){
        Node timeSeriesNode = timeSeriesNodes.item(timeSeriesIndex);
        expr = xpath.compile("//ns1:variable");
        NodeList variableNodes = (NodeList) expr.evaluate(timeSeriesNode, XPathConstants.NODESET);

        // Problem here. I've got all the …
Run Code Online (Sandbox Code Playgroud)

java xpath android evaluate

5
推荐指数
1
解决办法
1048
查看次数

64位ASP.NET MVC应用程序将无法运行

首先,我之前设法让我的64位测试网络应用程序之一在这台机器上运行(当我为这个项目进行原型设计时).我已经在32位工作了几个星期,并意识到我需要将应用程序切换到64位,当我做(在项目中将目标平台设置为x64)并重新部署时,它停止运行.

我上次花了好几天才得到64位工作,而且我不确定这次我错过了什么.

我正在IIS下发布和调试.

我收到BadImageFormatException消息:"无法加载文件或程序集'GEMS.Web'或其依赖项之一.尝试加载格式不正确的程序."

此应用程序引用64位和32位程序集.我在IIS的应用程序池中将"启用32位应用程序"设置为true.

我正在使用运行在64位Win 7机器上的VS.NET 2012,IIS 7.5.

以下是来自装配负载的跟踪:

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Windows\SysWOW64\inetsrv\w3wp.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = XXXXXX\xxxxxx
LOG: DisplayName = GEMS.Web
 (Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: GEMS.Web | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an …
Run Code Online (Sandbox Code Playgroud)

iis asp.net-mvc 64-bit badimageformatexception

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