我想以编程方式找出属性的默认绑定模式.
例如,如果我检查它TextBox.TextProperty应该是BindingMode.TwoWay,但如果ItemsControl.ItemsSourceProperty它应该是BindingMode.OneWay.
我实现了一个自定义的MarkupExtension,到目前为止我的代码中已经有了这么多:
public override object ProvideValue(IServiceProvider provider)
{
var service = provider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;
if (service != null)
{
var target = service.TargetObject as DependencyObject;
var property = service.TargetProperty as DependencyProperty;
// Not sure what to do with the target and propery here...
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
[ServiceContract(Name = "Save{0}")]
public ISave<T> where T : BusinessObject
{
[OperationContract(Name = "Save")]
void Save(T obj);
}
public class SaveCustomer : ISave<Customer>
{
public void Save(Customer obj) { ... }
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我使用IIS/WAS的WCF应用程序不喜欢我给的名字.它不会自动填充它.我看到了这个stackoverflow问题,它有关于为什么名称不会自动格式化的答案.我没有等待微软允许格式化名称,而是看到我是否可以用我自己的名称替换名称的功能.
我只是不确定我需要扩展(哪一类ServiceHost,ServiceHostFactory,DataContractSerializer等),甚至什么方法我要重写,以获得更友好的名称.另外,因为我甚至不知道我要创建什么类,我不知道在哪里可以告诉我的应用程序使用它(Global.asax成员?svc文件?属性?).
使用WIF(Windows Identity Foundation)4.5,Microsoft创建了WindowsPrincipal类,这是一种类型ClaimsPrincipal.当然,这些类不可移植,但它们背后的接口是(IPrincipal).ClaimsIndentity实现IIdentity接口的类也是如此.
我遇到的问题是这些类和WIF一般完全基于"声明"的概念,这很棒......但是这两个接口IPrincipal并IIdentity没有.不仅如此,ClaimsPrincipal该类还具有一系列标识,而不仅仅是与之关联的单个标识.
Identity和IsInRole成员.AuthenticationType,IsAuthenticated和Name成员.鉴于可移植类库只能访问这两个接口,如何获得实际的声明?
此外,在极少数情况下,委托人具有多重身份,如何获得"非主要"身份?
FooService.cs:
public interface IFooService
{
int Foo();
}
[Export("Foo1", typeof(IFooService))]
public class Foo1 : IFooService
{
public int Foo() { return 1; }
}
[Export("Foo2", typeof(IFooService))]
public class Foo2 : IFooService
{
public int Foo() { return 2; }
}
Run Code Online (Sandbox Code Playgroud)
FooViewModel.cs:
public class FooViewModel : NotificationObject
{
[ImportMany(typeof(IFooService))]
public IEnumerable<IFooService> FooServices { get; private set; }
[Import("Foo1")]
public IFooService FirstFoo { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
public class MyClass<T>
{
public static readonly String MyStringValue;
static MyClass()
{
MyStringValue = GenerateString();
}
private static String GenerateString()
{
//Dynamically generated ONCE per type (hence, not const)
}
public void Foo()
{
Console.WriteLine(MyStringValue);
}
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,在类上调用静态构造函数之前,不会生成静态readonly String.但是,在访问其中一个静态方法或变量之前,不会调用静态构造函数.
在多线程环境中,是否可能因此而遇到问题?基本上,静态构造函数是默认单例锁定还是我自己必须这样做?那是......我必须做以下事情:
private static Object MyLock;
static MyClass()
{
lock(MyLock)
{
if (MyStringValue == null)
MyStringValue = GenerateString();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,它读取源html并下载电子邮件的所有附件.这种方法很好,除了Microsoft Outlook有一些奇怪的源值,例如......
<img width="163" height="39" id="Picture_x0020_1" src="cid:image001.png@01CD7F6C.70CD2320" alt="Description: Description: Description: cid:image001.png@01CC6D59.AEF6D270">
首先,我想将它更改为Attachments\image001.png作为源.另外,alt应该只是image001.png,而不是这个长怪异的alt.不太确定如何解决这个问题.
基本上,如果我在C#中声明一个枚举,默认情况下它会实现哪些接口?
public enum Group
{
Unknown,
Children,
Teens,
YoungAdults,
Adults,
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试清理用于初始化静态只读变量的代码。
原来的:
public static readonly List<int> MyList;
//Initialize MyList in the static constructor
static MyObject() { ... }
Run Code Online (Sandbox Code Playgroud)
清理:
public static readonly List<int> MyList = GetMyList();
//Returns the list
private static List<int> GetMyList() { ... }
Run Code Online (Sandbox Code Playgroud)
public static readonly List<int> MyList =
() =>
{
...
return list;
};
Run Code Online (Sandbox Code Playgroud)
我试图将GetMyList()方法中的代码放入匿名委托中以返回要分配的列表,但它说我正在尝试将 adelegate转换为List<int>?
基本上,我有以下情况:
public abstract class FooBase<T> where T : FooBase<T>
{
public bool IsSpecial { get; private set; }
public static T GetSpecialInstance()
{
return new T() { IsSpecial = true };
}
}
public sealed class ConcreteFooA : FooBase<ConcreteFooA> { ... }
public sealed class ConcreteFooB : FooBase<ConcreteFooB> { ... }
Run Code Online (Sandbox Code Playgroud)
但是,我在这里看到的问题是我可以完成ConcreteFooB : FooBase<ConcreteFooA> { ... },这会在运行时完全弄乱类(它不符合我想要实现的逻辑),但仍然可以正确编译.
有没有什么方法我没有想到强制执行泛型T,无论派生类是什么?
更新:我最终在类中使用泛型参数T,FooBase<T>我只是没有列出每个将它作为out和in参数的方法,但我确实有一个用于T.
如何创建一个xml文件,该文件可以自动创建类似于*.resx文件的*.designer.cs文件?
基本上,我有一个xml文件(foo.xyz).更新后,我希望它自动创建(或更新)作为DependantUpon主foo.xyz文件的*.designer.cs 文件.我不知道这个过程甚至被称为知道如何搜索有关它的任何相关信息.谢谢!