public interface IInterface1
{
}
public interface IInterface2
{
}
public class MyClass : IInterface1, IInterface2
{
}
...
ObjectFactory.Initialize(x =>
{
x.For<IInterface1>().Singleton().Use<MyClass>();
x.For<IInterface2>().Singleton().Use<MyClass>();
});
var x = ObjectFactory.GetInstance<IInterface1>();
var y = ObjectFactory.GetInstance<IInterface2>();
Run Code Online (Sandbox Code Playgroud)
我用上面的代码得到了两个不同的MyClass实例.我该怎么办?
我试图理解Java的多态性,我有一个关于向下转换对象的问题.让我们说这个例子我有两个继承自超类Animal的子类Dog和Cat
根据我的理解,向下转换对象的唯一方法是,如果此Object已经是好的类型,如下所示:
Animal a = new Dog();
Dog d = (Dog) a;
Run Code Online (Sandbox Code Playgroud)
这样可行吗?
但是如果我想在不知道它会是什么的情况下创造一个普通的动物,然后在我知道的时候施放它,我该怎么办呢?
Animal a = new Animal();
Dog d = (Dog) a;
Run Code Online (Sandbox Code Playgroud)
这会在运行时抛出ClassCastException吗?
我发现这样做的唯一方法是创建一个新的Dog构造函数,从常规动物创建一个狗:
Animal a = new Animal();
Dog d = new Dog(a);
Run Code Online (Sandbox Code Playgroud)
同
public Class Dog extends Animal{
public Dog(Animal a){
super(a);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,我该怎么做呢?
非常感谢!nbarraille
在我的应用程序中,用户可以将自己的正则表达式模式输入到文本框中,这样他就可以强制为另一个用户/文本框输入特定的输入.用户是否可以查看与他输入的正则表达式匹配的字符串示例?例如,如果他要输入:^[A-Z]{2}$,它将生成一个类似" XX" 的字符串,以向用户显示他只能输入两个大写字母.
如果没有简单的方法来实现这一点(我认为没有),那么构建有多难?或者这样的事情已经存在?
我有以下问题.FindRoot实际上是在第三方DLL中,我无法控制它.它必须通过Begin调用来调用.有时,FindRoot方法会抛出异常.这导致我的整个应用程序崩溃.现在,即使FindRoot抛出异常,如何防止我的应用程序崩溃.
delegate void AddRoot(double number);
public static void FindRoot(double number)
{
throw new Exception();/// sometimes is thrown.
}
static void back_DoWork(object sender, DoWorkEventArgs e)
{
AddRoot root = FindRoot;
root.BeginInvoke(12.0, root.EndInvoke, root);
}
Run Code Online (Sandbox Code Playgroud) 好吧,我打算问一下有什么区别,但之前已经回答了.但现在我问他们为什么会产生这些差异呢?(我在这里讲的是java,我不知道是否同样适用于其他语言)
这两件事看起来非常相似.抽象类可以定义方法体,而接口则不能,但可以继承多个接口.那么他们为什么不(他们'我们的意思是Sun,当他们编写Java时)做了一件事情,你可以编写一个方法体,这种类型可以被一个类不止一次地继承.
没有能够编写方法体,或者延伸多次,我没有看到它有什么优势吗?
好的,首先是示例代码; 这是我尝试传达我正在尝试做的事情,尽管它没有编译:
#include <iostream>
template <class T>
class Base
{
public:
virtual void my_callback() = 0;
};
class Derived1
: public Base<int>
, public Base<float>
{
public:
void my_callback<int>()
{
cout << "Int callback for Derived1.\n";
}
void my_callback<float>()
{
cout << "Float callback for Derived\n";
}
};
class Derived2
: public Base<int>
, public Base<float>
{
public:
void my_callback<int>()
{
cout << "Int callback for Derived2.\n";
}
void my_callback<float>()
{
cout << "Float callback for Derived2\n";
}
};
int …Run Code Online (Sandbox Code Playgroud) c++ templates overriding multiple-inheritance specialization
我在C#中创建了一些自定义PowerShell Cmdlet,并希望提供一些使用get-help cmdlet显示的信息.例如"get-help my-cmdlet".
我创建了一个从PSSnapIn派生的基本snapin,并重写了Description,Name和Vendor属性.我还创建了我的帮助文件"Cmdlets.dll-Help.xml".Cmdlets.dll是此处指示的程序集的正确名称.
我创建了以下脚本来快速测试这个帮助:
$ErrorActionPreference = "Stop"
$scriptFolder = Split-Path $script:MyInvocation.MyCommand.Path
$dll = ($scriptFolder + "\Release\x64\Cmdlets.dll")
Write-Host "Testing Cmdlets in $dll" -fore Green
[System.Reflection.Assembly] $assembly = [System.Reflection.Assembly]::LoadFrom($dll)
Import-Module -assembly $assembly
get-help get-latestfiles
Run Code Online (Sandbox Code Playgroud)
这似乎只是提供了一些关于cmdlet参数的默认帮助,但未能获得我在XML文件中编写的任何示例.有没有人对这是为什么有任何想法?
我想锁定android的sdcard上的文件.我需要锁定它们,所以除了我的软件之外没有人可以删除复制移动或通过蓝牙或任何其他方式发送它们.我该怎么做?
我正在尝试检索设备中应用的权限.
奇怪的是,对于某些应用程序,我确实得到了结果,而在其中一些应用程序中,我无法检索任何权限.
也许为了获得应用程序的权限列表,应用程序必须设置一些特定的标志?因为如果我尝试以这种方式获取我的应用程序的权限列表:
PackageManager p = context.getPackageManager();
PermissionInfo[] z=p.getPackageInfo("com.test.myapp",PackageManager.GET_PERMISSIONS).permissions);
Run Code Online (Sandbox Code Playgroud)
z是的null,但对于一些应用程序(系统应用程序等)我得到一些列表.
任何的想法?
谢谢,moshik.
我有很多用C#.NET编写的类,我需要知道它们可以抛出哪些异常.我如何在Visual Studio 2005中完成它.
c# ×5
java ×3
.net ×2
android ×2
c++ ×1
delegates ×1
downcast ×1
exception ×1
file ×1
inheritance ×1
interface ×1
locking ×1
oop ×1
overriding ×1
permissions ×1
powershell ×1
regex ×1
singleton ×1
string ×1
structuremap ×1
templates ×1